爱问知识人 爱问教育 医院库

问个C二级的题目,麻烦大家了.

首页

问个C二级的题目,麻烦大家了.

main()
{
char *s="1234";
char *t=s;
while(*t++)printf("%d",(t-s));;
 printf("%d",(t-s));
  getch();

}

为何最后的那个输出是5?

提交回答
好评回答
  • 2009-06-18 22:41:30
    LZ可以这样理解:
    s和t是两个字符指针,均指向"1234"这个字符串首地址。
    while循环条件是*t,得到的是字符串的值,是非零值,所以可以循环4次,当指向字符串尾时,是字符'\0',为零值,所以结束循环,
    在循环体内的printf函数,输出的是两个指针地址的差值,t每次进行++自增1运算,而s指针值始终不变,这样指针地址的差值从1开始一直到4为止。
    循环体外的最后那一个printf函数输出的仍然是两个指针的差值,由于跳出最后一次时,指针t仍然进行了一个++运算,所以差值自然是5。
    实际上,这个值与字符串的长度有关。字符串长度为4,最后一个输出的即是5。字符串长度为5,最后一个输出6,以此类推即可。
    

    心***

    2009-06-18 22:41:30

类似问题

换一换
  • 软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):