永发信息网

一下程序的输出结果是 简单解释为什么 main() {char *s="abcde"; s+=2; print("%s\n",s);}

答案:4  悬赏:20  手机版
解决时间 2021-03-17 16:53
  • 提问者网友:缘字诀
  • 2021-03-16 23:56
一下程序的输出结果是 简单解释为什么 main() {char *s="abcde"; s+=2; print("%s\n",s);}
最佳答案
  • 五星知识达人网友:猎心人
  • 2021-03-17 00:08
s="abcde";
指向这个字符串.
当前指向a的位置.
然后 s+=2, 指向c的位置.
以%s输出,会输出
cde
全部回答
  • 1楼网友:孤独的牧羊人
  • 2021-03-17 03:51
(1) 指针本来是指向字符串的首地址a的,+2后指向c,故输出:c (2) 同理,由于是输出字符串,所以直到 '\0'为止,故输出:cde (字符串都是以'\0'结束的,复制的时候虽然没有'\0',但是系统会自动给加上这个的,这是字符串结束标志) (3) 同理,指向c,但是要输出整形,故读取c所占字节内容,c的ascii码为99,故即输出:99 (由于前面定义的指针p为字符型的,故即便是整形输出,也只读一个字节的内存) 希望能帮到你!~
  • 2楼网友:鱼芗
  • 2021-03-17 02:14
输出cde,s+=2表示把s的地址加2,则s的地址变成了c处的地址,输出就从c处地址开始的字符串,故为cde
  • 3楼网友:猎心人
  • 2021-03-17 01:42
输出:cde s首先是指向a的 执行s+=2后,s向后移动2*sizeof(char)个字节(这里就是移动两个字母) 所以s此时指向c 所以打印字符串从c开始,直到遇到结束符'\0',打印cde
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯