Char *s="abcde";
s+=2;printf ("%d",s);
这个题的为什么输出的是字符c的地址,求解释原理
s是字符串的首地址,加2表示地址向后移动两个位置,就指向字符c的地址,所以用%d输出的是字符c的地址
因为你输出用的是%d
输出修改为:
printf("%s",s);
s是指针,指针加法就是表示指针向后移动,加2就是向后移动两个单位,所以指向的就是c了
s一一开始指向的是字符串的首地址,也是a的地址
s+=2使得指针向后移动了两个单位,也就到了c的地址
s默认指向字符串第一个字符
s+=2;是把指针s的地址加2
s是一个指针,存放的内容就是指针所指向的地址,所以printf ("%d",s);打印字符c的地址
printf("%s",s);是%s哦,请采纳,谢谢🙈🙈🙈