网站建设过程中要细心,网站建设技术经理岗位职责,中铁建设集团有限公司领导名单,天津建设网首页目录
前言
数组指针的定义
数组指针的使用 前言
之前有编写过关于 指针数组 的相关知识
C语言 ——— 指针数组 指针数组模拟二维整型数组-CSDN博客
指针数组 顾名思义就是 存放指针的数组
那什么是数组指针呢#xff1f; 数组指针的定义
何为数组指针#xf…目录
前言
数组指针的定义
数组指针的使用 前言
之前有编写过关于 指针数组 的相关知识
C语言 ——— 指针数组 指针数组模拟二维整型数组-CSDN博客
指针数组 顾名思义就是 存放指针的数组
那什么是数组指针呢 数组指针的定义
何为数组指针
类比
整型指针 —— 指向 整型变量 的指针存放 的是 整型变量 的 地址
字符指针 —— 指向 字符变量 的指针存放 的是 字符变量 的 地址
那么
数组指针 —— 指向 数组 的指针存放 的是 数组 的 地址
数组指针的正确存放代码演示
int arr[5] { 1,2,3,4,5 };// 数组指针
int(*parr)[5] arr;
代码解析
解析int(*parr)[5] arr; 取地址数组名arr取出的是整个数组的大小
有关数组名的相关知识请见C语言 ——— 对于数组名的理解-CSDN博客 (*parr) parr 是一个 指针
int [5] parr指针 的 类型
int(*parr)[5] 去掉 parr指针剩下的就是 parr指针 的类型所以 parr 是 数组指针变量
注意[] 的优先级高于 * 号所以 *parr 要加上括号 数组指针的使用
数组指针 可使用于 二维数组传参时用 数组指针 来 接收
代码演示
#includestdio.hvoid PrintArr(int(*parr)[5], int row, int col)
{for (int i 0; i row; i){for (int j 0; j col; j){printf(%d , *((*(parr i)) j));}printf(\n);}
}int main()
{int arr[3][5] { 1,2,3,4,5,2,3,4,5,6,3,4,5,6,7 };// 打印二维数组的每个元素PrintArr(arr, 3, 5);return 0;
}
代码解析
一维数组的数组名 是 首元素地址那么 二维数组的数组名 也是 首元素地址
二维数组的首元素地址 是 第一行的整个元素所以 二维数组首元素的地址 就是 一个一维数组
所以将 二维数组arr 传参时用的是 数组指针接收
解析*((*(parr i)) j)
(parr i)遍历每一行的数组
(*(parr i))等价于*arr* 和 相互抵消所以 (*(parr i)) 可以看作 arr数组名
*((*(parr i)) j)利用上面的等价 *((*(parr i)) j) 等价于 *((*arr j)
这样就能遍历二维数组中的每个元素
代码验证