|
代码:
#include <stdio.h>
int main()
{
int array [3][4] = {1,2,3,4,
5,6,7,8,
9,8,7,6};
int i;
int (*a)[4];
a = array;
for (i = 0; i < 3; i++)
printf ("%d \n", *(*(a + i) + i));
return (0);
} 运行与输出:[beyes@localhost programming]$ ./temp1.exe
1
6
7 说明:
a 被定义为一个指向拥有 4 个整形数的数组。array [3][4] 是一个三行四列的二维数组。在 a = array 后,a 指向的是 array 数组中的一维,也就是说,像 ( a + 1 ) 一次的跨度是 4 个字节,即指向了array 数组的第 2 行。在 printf() 函数中里,*(a + i) 表示 array 数组中第 i 行的首个元素的地址,这时候,它的维度变为第 2 维,也就是说,此后 *(a + i) 的跨度是 1 个字节,而不是 4 个。 |
|