char *p="abcdef";
printf("%c",p[1]);
char q[7]="abcdef";
printf("%c",q[1]);
以上两句虽然打印结构相同,但内部逻辑完全不同。究其原因如下:
上面指针p可以解释为:符号表中p是一个地址,在这个地址中存储了一个数组的首地址。
上面的数组q可以解释为:符号表中q是一个地址,这个地址就是数组的首地址。
char *p="abcdef";
printf("%c",p[1]);
char q[7]="abcdef";
printf("%c",q[1]);
以上两句虽然打印结构相同,但内部逻辑完全不同。究其原因如下:
上面指针p可以解释为:符号表中p是一个地址,在这个地址中存储了一个数组的首地址。
上面的数组q可以解释为:符号表中q是一个地址,这个地址就是数组的首地址。