猿问

第三行下标不是已经超过范围了吗,为什么会这样?

第三行下标不是已经超过范围了吗?那个内存空间不是没有定义的吗?为什么会这样?

Single丶love
浏览 1519回答 2
2回答

凌小天3635910

int a[]={1,2,3,4,5};    //定义一个整形数组大小为5int int *p=a;               //定义一个指针变量p,将数组a首地址赋值给p。 int *p=&a[5];           //定义一个指针变量q,将数组首地址后5个int位的地址赋值给p                         //&a[5]等价于(a+5).既a地址后5int位。 printf("%d",q-p);       //输出q地址减去p地址的大小。

委屈的宝宝

的确没有定义,但是&a[5]只是取个地址,就是一次加法运算,也就是地址偏移。
随时随地看视频慕课网APP
我要回答