以下程序段的输出结果是?

来源:百度知道 编辑:UC知道 时间:2024/05/19 08:47:51
char *s="abcde";
s+=2;printf("%d",s);
请解释,谢谢
我查过了,程序没问题

程序有点问题吧

c所在地址

输出的是4333602
但是我也没有看懂!!呵呵
你是要看懂 就说一下呀!!!

s是个指向字符数组的指针,也即s指向该数组的第一个元素a;s+=2是将指针向后移动2个位置(每个位置大小为sizeof(char)),此时s指向c;由于是用%d格式输出,所以程序输出的是字符串中字符c的地址。

char *s="abcde";
s+=2;printf("%d",s);

你在指针方面有点问题。。。。
如果你是想要打出'c'的话,就该写成
char *s="abcde";
s+=2;printf("%c",*s);/*多个*号,且d改成c(不改成c的话就输出'c'的ASC2号码99)*/

不然就输出"abcde"字符串所在地址的后面第2个地址

是字母c所在的地址
char *s="abcde"; //定义字符串(数组)s//
s+=2; //数组s的首地址+2,即为s[2]的地址//
printf("%d",s); //以整形变量输出s的值//
所以最后输出的为字母c的地址的值
这个应该是随机的
不同的电脑结果不一样