void main()
{
printf("ABCD");
printf("\n");
printf("ABCD" +1);
printf("\n");
printf("ABCD" +3);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
ABCD
BCD
D
Run Code Online (Sandbox Code Playgroud)
谁能解释我为什么?
Jef*_*ter 16
"ABCD"实际上是一个字符数组{'A','B','C','D', '\0'}(其中'\0'是尾随空字节).如果你添加3,那么这相当于从A前进3个字节的指针,所以你最终指向D.
C FAQ中的问题6.2有一张图片说明了这一点.数组衰减为6.4中描述的指针,因此您可以了解变量的情况p.
char a[] = "hello";
char *p = "world";
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |