问个C二级的题目,麻烦大家了.
main() { char *s="1234"; char *t=s; while(*t++)printf("%d",(t-s));; printf("%d",(t-s)); getch(); } 为何最后的那个输出是5?
LZ可以这样理解: s和t是两个字符指针,均指向"1234"这个字符串首地址。 while循环条件是*t,得到的是字符串的值,是非零值,所以可以循环4次,当指向字符串尾时,是字符'\0',为零值,所以结束循环, 在循环体内的printf函数,输出的是两个指针地址的差值,t每次进行++自增1运算,而s指针值始终不变,这样指针地址的差值从1开始一直到4为止。 循环体外的最后那一个printf函数输出的仍然是两个指针的差值,由于跳出最后一次时,指针t仍然进行了一个++运算,所以差值自然是5。 实际上,这个值与字符串的长度有关。字符串长度为4,最后一个输出的即是5。字符串长度为5,最后一个输出6,以此类推即可。
答:http://www.233.com/ncre2/C/moniti/20130427/084236721.html 请参考这网站希望对您有所帮助。详情>>