int main(){
char strA[50] = "Hello";
char strB[50];
char *pA;
char *pB;
puts(strA);
pA = strA;
puts(pA);
printf("\n");
pB = strB;
while(*pA != '\0')
*pB++ = *pA++;
*pB = '\0';
puts(pB);
puts(strB);
return 0;
}
输出如下:
Hello
Hello
(空行)
(空行) <--为什么这一行会是空白?pB指向strB了为什么不是Hello呢?
Hello
自己调试一下堆栈不就知道了,最后换行之前都是无限的
这一行并不是没有输出,而是输出了‘\0’看不见而已。
你在while操作中自己已经改变了pB指针的指向(你的后自增操作),最终pB指向了‘\0’==>*pB = '\0';
最后自然就看不见输出内容了。
pB地址还是那个位置,=“\0”
的时候第一个字母被改成‘\0’
,所以不能输出后面的了。
int i;
for ( i=0 ; *pA != '\0'; i++)
*pB++ = *pA++;
*pB+i='\0'
这样的方法可以!+i就不是初始的了。