C语言【指针】

1. 基本语法

1.1 指针变量的定义和使用(重点)

指针是一种数据类型,指针变量指向谁 就把谁的地址赋值给指针变量

1.2 通过指针间接修改变量的值 

指针变量指向谁 就把谁的地址赋值给指针变量

可以通过 *指针变量 间接修改变量的值

1.3 const修饰的指针变量 

语法格式:

int a = 1;
const int *p1 = &a;    // 等价于 int const *p1 = &a;
int * const p2 = &a;
const int * const p3 = &a;

从左往右看,跳过类型,看const修饰谁

        如果修饰*,说明指针指向的内存不能改变

        如果修饰指针变量,说明指针的指向不能改变,指针的值不能修改

1.4 指针大小

使用 sizeof() 测量指针的大小,得到的总是:4或8

sizeof()测的是指针变量指向存储地址的大小

        在32位平台上,所有的指针(地址)都是32位(4字节);

        在64位平台上,所有的指针(地址)都是64位(8字节);

1.5 指针步长

指针步长指的是通过指针进行递增或递减操作时,指针所指向的内存地址相对于当前地址的偏移量。

指针的步长取决于所指向的数据类型。

        指针加n等于指针地址加上n个sizeof(type)的长度;

        指针减n等于指针地址减去n个sizeof(type)的长度;

1.6 野指针和空指针

指针变量也是变量,是变量就可以任意赋值,但任意数值赋值给指针变量没有意义,因为这样的指针就成了野指针,此指针指向的区域是未知(操作系统不允许操作此指针指向的内存区域)。

野指针不会直接引发错误,操作野指针指向的内存区域才会出问题

为了标志某个指针变量没有任何指向,可赋值为NULL

        NULL是一个值为0的宏常量

1.7 多级指针

C语言允许有多级指针存在,在实际的程序中一级指针最常用,其次是二级指针。

2. 指针和函数

2.1 函数参数传值

传值是指将参数的值拷贝一份传递给函数,函数内部对该参数的修改不会影响到原来的变量

2.2 函数参数传址(重点)

传址是指将参数的地址传递给函数,函数内部可以通过该地址来访问原变量,并对其进行修改。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/312430.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯第十五届javab组个人总结

javab组 额今天早上打完了得对自己此次比赛做总结,无论是明年还参赛还是研究生蓝桥杯,体验感有点差,第一题其实一开始想手算但怕进位导致不准确还是让代码跑了,但跑第202420242024个数(被20和24整除)一直把…

学习Rust的第4天:常见编程概念

基于Steve Klabnik的《The Rust Programming Language》一书。昨天我们做了一个猜谜游戏 ,今天我们将探讨常见的编程概念,例如: Variables 变量Constants 常数Shadowing 阴影Data Types 数据类型Functions 功能 Variables 变量 In layman ter…

03-JAVA设计模式-组合模式

组合模式 什么是组合模式 组合模式(Composite Pattern)允许你将对象组合成树形结构以表示“部分-整体”的层次结构,使得客户端以统一的方式处理单个对象和对象的组合。组合模式让你可以将对象组合成树形结构,并且能像单独对象一…

MR-JE-70A 三菱MR-JE伺服驱动器(750W通用型)

三菱MR-JE伺服驱动器(750W通用型) MR-JE-70A外部连接,MR-JE-70A用户手册,MR-JE-70A 三相或单相AC220V三菱通用型伺服放大器750W,配套电机HG-SN52J-S100、HG-KN73J-S100。 MR-JE-70A参数说明:伺服驱动器通用型750W,三相或单相AC200V~240V 三…

openHarmony 如何从API9升级到API10

最近用从官方下载的DevEco Studio3.1开发小app, 需要用到第三方库,加载第三方库,并添加代码,编译时如下错误: hvigor Finished :entry:defaultGenerateMetadata… after 3 ms hvigor ERROR: Failed :entry:defaultMergeProfile… …

Android 车载应用开发概述

前言 介绍 Android 车载应用开发 文章目录 前言一、Android Automotive OS 概述二、Android Automotive OS 架构三、常见的车载应用1、系统应用1)SystemUI是什么开发工作 2)Launcher是什么开发工作 3)Settings是什么开发工作 4)多…

ppt里的音乐哪里来的?

心血来潮,想照着大神的模板套一个类似于快闪的ppt。 ppt里是有一段音乐的,那段音乐就是从幻灯片第二页开始响起的。 但是我就找不到音乐在哪。 甚至我把ppt里的所有素材都删除了,再看动画窗格,仍然是空无一物,显然&…

【STL】list的模拟实现

目录 前言 list概述 list的节点 list的迭代器 list的结构 构造与析构 拷贝构造与赋值 list的元素操作 insert() push_back() push_front() erase() pop_back() pop_front() clear() swap() size() 完整代码链接 前言 如果你对链表还不熟悉或者忘了的话…

秸秆焚烧智能监测摄像机

秸秆焚烧是一种常见的农业作业方式,但其会造成大气污染,危害环境和人体健康。为了监测和控制秸秆焚烧产生的污染,可以使用秸秆焚烧智能监测摄像机。这种设备通过高清摄像头和智能识别算法,可以实时监测秸秆焚烧的情况,…

【C++】stack与queue(相关接口介绍、容器适配器、deque、模拟实现)

一、stack 1.1 stack介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供…

Go 单元测试之HTTP请求与API测试

文章目录 一、httptest1.1 前置代码准备1.2 介绍1.3 基本用法 二、gock2.1介绍2.2 安装2.3 基本使用2.4 举个例子2.4.1 前置代码2.4.2 测试用例 一、httptest 1.1 前置代码准备 假设我们的业务逻辑是搭建一个http server端,对外提供HTTP服务。用来处理用户登录请求…

网红泡泡机单片机方案开发定制

酷得(i-coder)是一家专业的技术服务公司,致力于为各类智能硬件提供高效、稳定、安全的底层驱动解决方案。我们拥有一支经验丰富、技术精湛的团队,能够为客户提供全方位的底层驱动开发服务。 下面是酷得的开发流程: 1…

记录一次k8s pod之间ip无法访问,问题排查与定位

记录一次k8s pod之间ip无法访问,问题排查与定位 问题展现现象 node之间通信正常 部分node上的pod无法通信 排查有问题node 使用启动网络测试工具 环境准备 docker 数据库mysql 使用有状态副本集合 --- apiVersion: apps/v1 kind: StatefulSet metadata:anno…

Win10本地更新无法升级win11 的0x80080005解决方法

Win10本地更新无法升级win11 Visual Studio 2022 运行项目时,本文提供了错误“指定的程序需要较新版本的 Windows”的解决方法。 更新时提示:0x80080005 解决方法 1、下载Windows11InstallationAssistant.exe 【免费】Windows11InstallationAssista…

基于GAN的图像补全实战

数据与代码地址见文末 论文地址:http://iizuka.cs.tsukuba.ac.jp/projects/completion/data/completion_sig2017.pdf 1.概述 图像补全,即补全图像中的覆盖和缺失部分, 网络整体结构如下图所示,整体网络结构还是采取GAN,对于生成器,网络结构采取Unet的形式,首先使用卷积…

高级数据结构与算法(8)

一、选择题 1、Rod-cutting Problem: Given a rod of total length N inches and a table of selling prices PL​ for lengths L=1,2,⋯,M. You are asked to find the maximum revenue RN​ obtainable by cutting up the rod and selling the pieces. For example, based o…

SpringBoot和Axios数据的传递和接收-Restful完全版

文章目录 一、基础知识铺垫Axios使用HTTP请求方式数据传输方式SpringBoot获取数据的方式 二、基础传递代码示例(一)Path Variables(二)Get、DeleteRequestParamModelAttribute (三)Post、Put、PatchRequest…

2024年五一杯数学建模B题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

DataX案例,MongoDB数据导入HDFS与MySQL

【尚硅谷】Alibaba开源数据同步工具DataX技术教程_哔哩哔哩_bilibili 目录 1、MongoDB 1.1、MongoDB介绍 1.2、MongoDB基本概念解析 1.3、MongoDB中的数据存储结构 1.4、MongoDB启动服务 1.5、MongoDB小案例 2、DataX导入导出案例 2.1、读取MongoDB的数据导入到HDFS 2…

期货开户只要跟随于市场即可

仓,和时间无关;和价格运动的距离长短也很少关联,如果有的话,就是看价格运动的边界是否已经到达或准备穿越,价格运动的边界,其实很好辨认(说的好,精辟)。十五分钟以上图形…