=b1)st main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}求结果,劳驾对不起打错了,是while(--pb>=b1)那个while里面是不是写错了,应该是while(--pb)?那样的话,结果应该是 7. 因为:那个循环是起误导作用的,执行过程应该是这样的:循环第一次:把pb指向的内容--"cdefg ...">

main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)st

问题描述:

main(){char b1[8]="abcdefg",b2[8],*pb=b1+3; while(--p>=b1)strcpy(b2,pb);printf("%d",strlen(b2));}
求结果,劳驾
对不起打错了,是while(--pb>=b1)
1个回答 分类:综合 2014-10-19

问题解答:

我来补答
那个while里面是不是写错了,应该是while(--pb)?
那样的话,结果应该是 7. 因为:
那个循环是起误导作用的,执行过程应该是这样的:
循环第一次:把pb指向的内容--“cdefg“拷贝到b2中;
循环第二次:把pb指向的内容--“bcdefg“拷贝到b2中,将第一次b2中拷贝所得的内容覆盖;
.
最后一次,将pb指向的内容--b1拷贝到b2,然后指向strlen.
ps:strcpy b2指向的地址开始拷贝,会覆盖之前的内容,strcpy默认遇到‘\0’停止拷贝.
stren不将‘\0’计算在内.
 
 
展开全文阅读
剩余:2000