读书人

小弟我要疯了.指针,指针.各位大侠帮小

发布时间: 2012-03-18 13:55:39 作者: rapoo

我要疯了.指针,指针..各位大侠帮我看看吧..
char* stringcat(char* a,char*b)
{
char* p=a;
while(*a)//这样写是正确的
{
a++;
}

while(*a++=*b++);
return p;
}


char* stringcat(char* a,char*b)
{
char* p=a;
while(*a++);//这样写就会出现错误

while(*a++=*b++);
return p;
}


上面两个函数中指针a都是在遇到结束符的时候结束.为什么一个能连接成功,一个不能连接成功.百思不得其解,调试了半天还是没摸到头绪...各位前辈帮帮忙把,解决不了,我睡不着觉....

[解决办法]
*a++的意思是把a指向的内容+1,当到字符串结尾时,*aj是'\0',+1就为1,判断永远为真,真到碰到一个值为-1的字节才结束
[解决办法]
char* stringcat(char* a,char*b)
{
char* p=a;
while(*a)//这样写是正确的 //判断 *a是否是'\0'
{
a++;//指针加一,指向下一个指针
}

while(*a++=*b++);
return p;
}


char* stringcat(char* a,char*b)
{
char* p=a;
while(*a++);//这样写就会出现错误 //第一个字符不断加1,结果是字符越界(>256)报错

while(*a++=*b++);
return p;
}

读书人网 >C语言

热点推荐