当前位置: 首页 > 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])
http://www.xdnf.cn/news/264385.html

相关文章:

  • 每天一道面试题@第五天
  • 第九课认识倍数
  • 【C++】模板进阶
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 20)
  • 多协议 Tracker 系统架构与传感融合实战 第四章 IMU 与 UWB 传感融合框架
  • 基于Springboot旅游网站系统【附源码】
  • 步进电机中断函数解释
  • rhce第二次作业
  • 工作记录 2015-06-01
  • fastapi+vue中的用户权限管理设计
  • Seata RM的事务提交与回滚源码解析
  • 六大机器学习算法全解析:企业级开发实战与深度理解
  • AWS云服务深度技术解析:架构设计与最佳实践
  • Android Compose 物联网(IoT)UI 组件库封装指南
  • Dev-C++下载安装使用教程
  • 单细胞测序数据分析流程的最佳实践
  • Java学习手册:关系型数据库基础
  • 爬虫准备前工作
  • 【AI面试准备】NLP解析API文档生成测试脚本
  • 二叉树 - JS - 2
  • 49-dify案例分享-私有化 MCP 广场搭建与网页小游戏智能体工作流实战
  • 学习Cesium自定义材质
  • 硬件工程师面试常见问题(12)
  • 【LeetCode Hot100】贪心篇
  • 在pycharm profession 2020.3将.py程序使用pyinstaller打包成exe
  • Windows 中使用dockers创建指定java web 为镜像和运行容器
  • C++ STL vector高级特性与实战技巧
  • AVFormatContext 再分析零
  • 在Windows系统中使用Docker发布镜像到镜像仓库
  • 用PyTorch搭建卷积神经网络实现MNIST手写数字识别