对 char (&p)[9] = array;有些不太明白。请教
#include<stdio.h>
main()
{
char array[9] = {48,49,50,51,52,53,54,56,57};
char (&p)[9] = array;
char *q = array;
printf("%d\n%d\n%d\n",sizeof(p),sizeof(array),sizeof(q));
return 0;
}
对 char (&p)[9] = array;有些不太明白。
我的理解是array是一个指针(指向数组array[9]的第一个元素)。把array赋值给p,然后&p,这样声明char (&p)[9]就相当于创建了一个数组p[9],而且数组p和数组array在内存中占的地址一样。等于p是array的一个别名。
在vc++6.0下调试,结果如下。不明白为什么array和&array一样,&p和&array不一样。
array 0x0012ff74 "012345689烫汤."
&array 0x0012ff74 "012345689烫汤."
p 0x0012ff74 "012345689烫汤."
&p 0x0012ff74
我的理解肯定有很多不对的地方,请教大家!