shaoguanfa 发表于 2014-12-27 21:51:16

C初学者的困惑 求解决

#include <stdio.h>
void main()
{
char a[]="我爱你!",b,*p1,*p2;
int i;
p1=a;
p2=b;
for(;*p1!='\0';p1++,p2++)
{
*p2=*p1;
}
*p2='\0';
printf("%s\n",a);
for(i=0;b!='\0';i++)
{
printf("%c",b);
}
printf("\n");

}
*p2='\0';
程序没问题但是不明白这是什么意思是执行完在进行赋值的吗?赋值以后不是改变了P2的值了吗?

蔚蓝 发表于 2014-12-27 23:53:45

*p2='\0';   字符串是以\0为结尾的,所以最后加上\0,你这个程序作用大致是将字符数组a的字符串拷贝到字符数组b,然后输出字符数组a和字符数组b

Mr.屎壳螂 发表于 2014-12-28 00:01:45

*p2='\0';是为了给你的新字符串结尾;
因为在你复制的时候那个循环用的条件是*p1!='\0'
所以当*p1=='\0'的时候,循环已经不会进行了,也就没有对新字符串的最后一位加上结束符,
所以最后要加上一个'\0';

shaoguanfa 发表于 2014-12-28 11:41:51

{:5_111:}

1687110982 发表于 2014-12-28 21:18:23

字符串要以00结尾

shaoguanfa 发表于 2014-12-28 21:28:49

嗯谢谢
页: [1]
查看完整版本: C初学者的困惑 求解决