int a[3][4];int (*p)[4]=a;
时间: 2024-12-23 16:11:41 浏览: 5
在C语言中,当你声明一个二维数组 `int a[3][4]` 时,它实际上是创建了一个可以存储三行四列整数的内存块。而当你将其赋值给指针变量 `int (*p)[4]`,这个指针 `p` 就是一个指向一维数组(即每行四个连续元素)的指针。
`(*p)` 表示通过指针 `p` 访问的数组, `[4]` 则表示数组每个元素占用4个整数的空间。所以,`p = a` 实际上是将数组 `a` 的首地址赋予了 `p`,使得 `p` 指向的是 `a` 中第一行的开始位置,你可以用 `p` 来遍历整个数组的每一行。
举个例子:
```c
int main() {
int a[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int (*p)[4] = a;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
printf("%d ", p[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个例子中,`p` 可以用来遍历并打印出 `a` 数组的所有元素。
阅读全文