小白c语言理解求助!谢谢大神看一下,很简单的。

double arr [ 4 ] = { 1, 2, 3, 4 };
double* p = arr + 2;
printf("%.2lf \n", *p);
printf("%.2lf \n", p[1]);
为什么第二个printf输出的是4.00。p[1]这个数组是怎么来的?

指针p指向数组的第三个元素,所以p[1]=4,
也就是p将原数组的第三个元素作为自己的第一个元素。数组是从0开始的,所以p[1]指的实际上是p的第二个元素追答

arr[0]=1,arr[1]=2,arr[2]=3,arr[3]=4。
p=arr+2=&arr[2],
所以*p=p[0]=arr[2]=3,
p[1]=arr[3]=4

看了下楼下的回答,我觉得有必要指出一下

double* p=arr+2;的意思是数组的首地址加2而不是里面的元素加2,所以p不等于{3,4,5,6};

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-08
第二步:double* p = arr + 2;
得到*p= { 3, 4, 5, 6 };
所以p[1]=4,数组下标从0开始的
相似回答