怎么用指向指针的指针表示二维数组
时间: 2024-09-07 16:06:46 浏览: 50
举例理解C语言二维数组的指针指向问题
5星 · 资源好评率100%
在C语言中,使用指向指针的指针(即指针的指针)来表示二维数组是一种常见的做法。这种表示方法通过两个层次的指针来间接访问二维数组的元素。具体来说,我们可以定义一个指向指针的指针变量,然后让这个变量指向一个指针数组,每个指针代表二维数组的一行。
下面是具体的步骤和示例:
1. 首先定义一个指针数组,每个指针指向二维数组的一行。
2. 然后定义一个指向指针的指针变量,让它指向这个指针数组。
3. 最后通过这个指向指针的指针来访问二维数组的元素。
示例代码如下:
```c
int main() {
// 假设我们有一个3x3的二维数组
int arr[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 定义一个指向指针的指针,指向上面二维数组的每一行
int (*ptr)[3] = arr;
// 使用指向指针的指针访问二维数组的元素
// 输出第二行第一列的元素,应该是5
printf("%d\n", (*ptr)[1]); // 或者使用 ptr[1][0]
// 重新定义一个指向指针的指针,指向二维数组的每一列
int *p[3];
for (int i = 0; i < 3; i++) {
p[i] = &arr[i][0]; // 每个p[i]指向arr的第i行
}
// 输出第二列第二行的元素,应该是6
printf("%d\n", *(p[1] + 1));
return 0;
}
```
需要注意的是,尽管这里使用了指向指针的指针来表示二维数组,但在实际编程中,更常见的是直接使用数组的数组,如`int arr[3][3];`,或者使用一维数组模拟二维数组,如`int arr[9];`然后通过索引公式计算对应元素的地址。
阅读全文