#include <stdio.h> int main(int argc, char const *argv[]) { int a[2][3] = {1, 2, 3, 4, 5, 6}; int(*p)[3] = a; // p指针代表 第一行的地址,称之为行地址 for (int i = 0; i < 2; i++) { printf("----第%d行----\n", i); for (int j = 0; j < 3; j++) { // 一维数组指针名+[],取某行的首列地址,等价于 *(指针+i) // printf("%d ", *(*(p + i) + j)); // *p 取第0行的第0列的地址, *行地址降 级为列地址 printf("%d ", *(p[i] + j)); // *p 取第0行的第0列的地址, *行地址降级为列地 址 } printf("\n"); } return 0; }
时间: 2024-04-15 09:30:21 浏览: 171
这段代码演示了如何使用指针访问二维数组中的元素。以下是代码的解释和执行结果:
```c
#include <stdio.h>
int main(int argc, char const *argv[]) {
int a[2][3] = {1, 2, 3, 4, 5, 6};
int(*p)[3] = a;
// 使用指针p遍历二维数组
for (int i = 0; i < 2; i++) {
printf("----第%d行----\n", i);
for (int j = 0; j < 3; j++) {
// 使用指针p访问二维数组中的元素
printf("%d ", *(p[i] + j));
}
printf("\n");
}
return 0;
}
```
输出结果:
```
----第0行----
1 2 3
----第1行----
4 5 6
```
在这段代码中,我们定义了一个二维数组 `a`,然后声明了一个指向每行有3个元素的整型数组的指针 `p`。通过将 `a` 赋值给 `p`,我们将 `p` 指向了数组 `a` 的首行。然后,使用指针 `p` 遍历二维数组,并打印每个元素的值。
在内层循环中,我们使用 `*(p[i] + j)` 来访问二维数组中的元素。其中,`p[i]` 表示第 `i` 行的首元素的地址,然后通过 `*(p[i] + j)` 将列索引 `j` 应用到地址上来访问每个元素的值。
如果您有任何其他问题,请随时提问。
阅读全文