int main()
{
int* a[5];
int (*b)[5];
int i = 2, j = 3, k = 4;
b = a;
a[0] = &i;
printf("%d %d %d/n", *a, *a[0], i);
printf("%d %d %d/n", a, a[0], &i);
printf("%d ", b);
b++;
printf("%d/n",b);
getchar();
}
[]的优先级比*高,故a、b两个变量:
a代表一个数组,其数组元素存储的类型是int *;
a的值代表数组首元素a[0]的地址值,是一个指针,即*a=a[0],只是需要注意的是这个指针类型为const,即不能改变的。
b代表一个数组指针,它指向一个int [5]型的数组;
因为b的类型,所以b++后,它会偏移sizeof(int)*5 个字节。
一些小的C知识点温故下。