C47-数组指针
一 数组指针的基本语法
1. 基本定义
数组指针是指向整个数组的指针,而非指向数组首元素的指针。其核心特征是能够保留数组的维度信息。
2. 声明与初始化
声明方式
// 指向含5个int的数组的指针
int (*arrPtr)[5];
初始化方法
int matrix[3][5] = {0};
int (*ptr)[5] = matrix; // 指向matrix的第一行(整个5元素数组)// 错误示例(类型不匹配)
int *p = matrix; // 错误!matrix类型是int (*)[5]而非int *
3. 核心操作
操作 | 示例 | 说明 |
---|---|---|
指针移动 | ptr++ | 移动到下一个子数组(行) |
解引用访问 | (*ptr)[2] | 访问当前指向数组的第2个元素 |
多维数组访问 | ptr[1][3] | 等价于*(*(ptr+1)+3) |
二 易混淆点辨析
对比项 | 数组指针 int (*)[N] | 指针数组 int *[N] |
---|---|---|
定义 | 指向数组的指针 | 存放指针的数组 |
声明 | int (*ptr)[5] | int *arr[5] |
元素类型 | 整个数组 | 指针 |
典型用途 | 处理多维数组 | 字符串数组/指针集合 |
典型错误示例:
int *ptr[5]; // 指针数组(5个int指针)
int (*ptr)[5]; // 数组指针(指向含5个int的数组)