以下程序的输出结果是:

以下程序的输出结果是:
#include “stdio.h”
main()
{char *s,*s1=“here is”,*s2=“key”;
s=s1;
while (*s1!=’\0’) s1++;
while (*s1++!=*s2++) s2=s;
while (*s2!=’\0’) s2++;
printf ("%d-%d=%d\n",s2,s,s2-s);
}
之前一直不理解这个的结果是什么意思。。
在这里插入图片描述

#include "stdio.h"
main()
{char *s,*s1="here is",*s2="key"; 
s=s1; //从这里开始,print的s=s1=19748668,即字符串存储起始位置
while (*s1!='\0')	s1++;//s1向后走,直到字符串的末尾\0,此时printf的s1=19748675
while (*s1++!=*s2++)	s2=s;
//这行功能:比较s1与s2,s1的“h”(位置为s+1=19748669)与s2的“k”不同,则s2=s
//这行执行后:s1=19748922,s2=19748669
while (*s2!='\0')	s2++; 
//这行让s2查找至末尾\0: s2=19748675(*s2="here is")
printf ("s=%d\n",s);
printf ("s1=%d\n",s1);
printf ("s2=%d\n",s2);
printf ("%d-%d=%d\n",s2,s,s2-s);//s2-s即“here is”的长度为7
}

每次执行程序,存储位置都不一定相同,故s,s1,s2的值每次都会有所不同,但是存储的相对位置是不会改变的,s2-s即“here is”的长度,为7。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

aa小小

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值