回复 10# 的帖子
诶~原来如此~谢谢! ----------------解决方案--------------------------------------------------------
#include "stdio.h"
int main(void)
{ int j,i=0;
char a[100];
while((a[i++]=getchar())!=10);
i=0;
j=0;
while(((j++%2==1)?putchar(' '):putchar(a[i++]))!=10);
return 0;
}
----------------解决方案--------------------------------------------------------
[bc01]
----------------解决方案--------------------------------------------------------
1 char *s="\ta\018bc"中指针只是指向的是这个字符窜的首字符的地址,但for(;*s!="\0";s++)中s++它并不是将所指的东西往后指,而只是把指针本身的位置往后移,这样指针就好像失去了真正要指的目标,指到不可知的地方了。而运用数组就不会,数组是一个分配的连续的存储单元
----------------解决方案--------------------------------------------------------
2 a是a[5]的数组首地址,而p定义的是一个指针,指向了a[0],但是你给a赋值1000,这样的话会改变它的存储地址而不是数组本身的值
----------------解决方案--------------------------------------------------------
C99 标准的编译器对类型比较严格。
----------------解决方案--------------------------------------------------------
回14 15楼:
14:问题不在于指针,而是在于和指针比较的东西。楼主的代码虽然导致那个字符串只被使用了一次,但是也是正确的。错误在于,它把一个字符和字符指针相比了!
15:不用多说什么“改变a的值”了,a是常量,不可能被改变的。这种语句在任何编译器上都是错误。相信就算是在TC上,没有编译错误,运行了也是错误的!
----------------解决方案--------------------------------------------------------