C语言指针与多维数组:容易混淆的 3 个核心概念
数组名的指针本质
- 一维数组名
arr
是int*
类型,指向首元素arr[0]
。 - 二维数组名
matrix
是int (*)[n]
类型(指向包含 n 个 int 的一维数组),即「数组指针」。 - int matrix[2][3];
int (*ptr)[3] = matrix; // ptr指向第0行,ptr+1指向第1行
printf(“%d”, (*ptr)[1]); // 等价于 matrix[0][1] = 2 - 2 指针数组 vs 数组指针
指针数组:int* arr[5],是包含 5 个 int 指针的一维数组。
数组指针:int (*arr)[5],是指向包含 5 个 int 的一维数组的指针。
区分关键:括号位置 ——(*arr) 表示这是一个指针,指向数组。
5.3 用指针访问多维数组的 3 种方式
以二维数组 int arr[2][3] 为例:标准下标法:arr[i][j]
指针偏移法:*(arr[i] + j)(arr[i] 是第 i 行首地址,+j 偏移 j 个元素)
二级指针法(需类型匹配) - int **p = (int **)arr; // 仅当二维数组是连续内存时可用,否则报错
printf(“%d”, p[i][j]);
欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » C语言指针与多维数组:容易混淆的 3 个核心概念
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » C语言指针与多维数组:容易混淆的 3 个核心概念