当前位置: 首页 > news >正文

C与指针4——指针

NULL

1、是一个指针变量
2、代表它不指向任何东西

指针的常见运算

int d[4]={1234};
int* d0 = &d[0];
int* d1 = &d[1];
//则d0+1 就是 d1
//d1-d0 = 1;
//指针的加法取决于指针所指的对象
//两个指针相减的对象是ptrdiff_t 有符号整形

数组与指针

int a[3]={1,2,3};
int** k = &a;

1、a的数据类型是 指向int类型的常量指针a == &a[0]
2、&a 是一个指向数组的指针
3、尝试修改a变量的值是不合法的
4、sizeof(a)返回的是数组长度。

int a[3]={1,2,3};
int b[3]={1,2,3};
a=b;//不合法,常量指针禁止修改

5、关键补充:下标引用与间接访问完全相同!

int a[3]={1,2,3};
//1、下标引用a[1] 和 间接访问*(a+1) 等价
int* pa = a+1;
//2、pa[0] 是合法的。pa[0]==*(a+1)
//3、pa[-1]是合法的。pa[-1]==*(a)

6、补充说明:数组名和指针不等价!
1、a是一个常指针,但是b的指向可改变。
2、数组名和指针进行sizeof结果不同。

int a[5];
int* b=&a[1]; 
sizeof(a)==20//5个元素*4 = 20 字节
sizeof(b)=4//4个字节

3、同:都可以进行下标引用和间接访问的操作。

二维数组

1、补充说明:不管是几维数组,在空间中都是顺序存储的。而且是行优先

int aa[2][3]={{1,2,3},{1,2,3}};//合法
int aa[2][3]={1,2,3,1,2,3};//也是合法

2、sizeof的作用也是完全相同

int aa[2][3]={{1,2,3},{1,2,3}};//合法
sizeof(aa)=24;

3、二维数组与指针

int aa[2][3]={{1,2,3},{1,2,3}};
sizeof(aa)=24;
sizeof(*aa)=12;

3-1、aa是二维数组名、指向第一个一维数组的常指针
3-2、aa+1 代表指向第二个一维数组的常指针。
3-3、下标引用与间接访问等价,*(aa+1) 和 aa[1]均表示
指向第二个一维数组的第一个元素的常指针。
3-3、aa[1][2] = *(aa[1]+2) = *(*(aa+1)+2)

2、补充说明:如何声明一个指向数组的指针

int (*p)[10];//这就是一个指向数组的指针,该数组的长度为10
int a[10];
p = &a; 
int aa[2][3];
p = aa;//p是一个指向数组的指针,指向的数组是aa的第一个一维数组

3、函数传参为指针的等价

void func(int d[2][3])
void func(int (*p)[3])

相关文章:

  • 04 基于 STM32 的时钟展示程序
  • js单调栈解题模板
  • [UVM]UVM中reg_map的作用及多个rem_map的使用案例
  • QNAP Duplicati 备份 123云盘
  • Learning vtkjs之Cutter
  • Spring AI 实战:第一章、Spring AI入门之DeepSeek调用
  • 深入解析高并发场景下分布式缓存优化实战:从原理到性能提升
  • MIT6.S081-lab8
  • 创建第一个简单cesium程序
  • Vscode+git笔记
  • 什么是 Redis?
  • PCIe | TLP | 报头 / 包格式 / 地址转换 / 配置空间 / 寄存器 / 配置类型
  • 叠层阻抗线框
  • MNN 支持 DeepSeekVL
  • Docker安装Ollama及使用Ollama部署大模型
  • 解析机器人 2.0.2 | 支持超过50种短视频平台的链接解析,无水印提取,多功能下载工具
  • deepSeek论文写作提示词指令大全(覆盖选题、写作、润色到投稿全流程)
  • 测试基础笔记第十八天
  • linux下,ollama会把模型文件保存在哪里?
  • Python Cookbook-6.17 NuIl对象设计模式的实现
  • 辽宁召开假期安全生产工作调度会:绝不允许层层失守,绝不允许“带病运行”
  • 看着不爽就滚蛋!郑州大学第一附属医院一科室公众号被曝运营人员辱骂他人
  • 中青报:“爸妈替我在线相亲”,助力还是越界?
  • 2025年五一档电影新片票房破3亿
  • 美“群聊泄密门”始作俑者沃尔兹将离职
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?