#include<stdio.h>
main()
{
char s[]="ABCD",*p;
printf("%c %c %c %c %c",s+0,s+1,s+2,s+3,s+4);
for(p=s;p<s+4;p++)
printf("%s\n",p);
}
为什么s+0不是指向A,而是指向了@,而S+1才开始是指向A的呢??
#include<stdio.h>
main()
{
char s[]="ABCD",*p;
printf("%c %c %c %c %c",s+0,s+1,s+2,s+3,s+4);
for(p=s;p<s+4;p++)
printf("%s\n",p);
}
为什么s+0不是指向A,而是指向了@,而S+1才开始是指向A的呢??
s+0只是一个地址。
地址是一个4字节长整型数据
而printf("%c",s+0);只取其中1个字节。所以这不一定是'@',其它的字符都有可能。
s[0]或*(s+0)才会是A
printf("%c %c %c %c",*s,*(s+1),*(s+2),*(s+3),*(s+4));
或
printf("%c %c %c %c",s[0],s[1],s[2],s[3],s[4]);
都会得到A B C D
而s[4]是字符串的结束标志。
....输出的是地址的值转化成相应ASCII码的符号。。。。
请在地址前加上‘*’号表示反引用。
比如:printf("%c",*s);