用指向数组的指针遍历二维数组
时间: 2023-07-20 11:07:43 浏览: 38
可以使用两种方法来使用指向数组的指针遍历二维数组。第一种方法是使用双重循环,如下所示:
```c
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int (*p)[4] = arr; // 定义一个指向数组的指针
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", *(*(p + i) + j));
}
printf("\n");
}
```
在这个例子中,我们先定义了一个二维数组`arr`,然后定义了一个指向数组的指针`p`,并将其指向`arr`。在循环中,我们使用双重循环遍历二维数组,并使用指针`p`来访问数组元素。
第二种方法是使用指针算术运算,如下所示:
```c
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int (*p)[4] = arr; // 定义一个指向数组的指针
for (int i = 0; i < 3 * 4; i++) {
printf("%d ", *(*p + i));
if ((i + 1) % 4 == 0) {
printf("\n");
p++;
}
}
```
在这个例子中,我们同样先定义了一个二维数组`arr`和一个指向数组的指针`p`,并将其指向`arr`。在循环中,我们使用指针算术运算来访问数组元素,每访问完一行后将指针`p`向下移动一行。需要注意的是,在使用指针算术运算时,需要将指针转换为指向一维数组的指针,即`*p`。
阅读全文