未定义的字符串“string”为什么也算地址啊!求解释详细

本人学了几遍指针,还是有好多不懂,求解答详细:“string”中哪一个是地址,还是它们整体就是一个地址。如果是‘s’是地址为什么输出了“tring”而不是“ttring”;如果它们整体才是一个地址那为什么“string”+1后输出了“tring”而不是“string”地址+1后的东西啊?😱求帮助,求解答详细。

img

"string“是字符串,在printf参数中,默认是const char *类型,
printf("%s","string")等价于:
char *p = "string";
printf("%s",p);
所以,"string"+1相当于 p+1
p是字符串”string"的首地址,p+1是往后移动一个字节,所以printf("%s","string"+1)就等价于 printf("%s",p+1);输出的是 "tring"

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632