Answers
int a[5]={1,2,3,4,5};
这一行是5个元素的数组,数组就是指针。 相当于 inta;
int (p)[5];
这一行是定义了有5个元素的指针数组。不是5个数,是5个指针。相当于 int*p;
p=&a;
这一行相当于把存放a这个指针的地址给了p,a是指向5个元素的指针,但是存放这个指针的地址有什么意义呢?无论想实现什么或者考试考什么,这行就可以认为是错的。p[0] = a; p+2 = a; ... 都是可以的。
printf("%d\n",(p+2));
p没有意义后面就好理解了。
没试,谁有时间试试。
Psyche
answered 13 years, 2 months ago
int (p)[5];定义一个指向存放5个int类型元素的数组的指针
p=&a,使p指向数组a的地址(a相当于&a)
为什么 printf("%d\n",(p+2))和printf("%d\n",(p+2));的结果都是随机数,分别代表的什么意思?
-------------------------------------------------------
因为a是指向数组的指针,而不是指向数组元素的指针。
int (p)[4]和int p[4]的区别?/
-------------------------------
int (*P)[4]定义的是个指针,该指针指向一个指向存放4个int类型元素的数组的指针
int *p[4]定义的是一个存放4个(int *)类型元素的数组,是一个int类型指针数组。
左手剪刀右手布
answered 13 years, 2 months ago