首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++解释代码:上面的代码中的while(*p1++)为什么不写成while(p1++)

2013-03-12 
C++解释代码:下面的代码中的while(*p1++)为什么不写成while(p1++)?#include iostream.h#include string

C++解释代码:下面的代码中的while(*p1++)为什么不写成while(p1++)?
#include <iostream.h>
#include <string.h>
char  *stringcat(char * p1,char *p2)
{  
    char *p=p1;               //将目标串首地址赋给指针变量p。
   while(*p1++);             //指针p1移到s1的串尾  
   p1--;
   while (*p1++=*p2++);  // 将源串s2中的字符依次复制到目标串s1中。
   return p;               //返回指向目标串首地址的指针p。  
}
int main(void)
{  
    char s1[200],s2[100];
   cout<<"输入第一个字符串:";
   cin.getline( s1,100);
   cout<<"输入第二个字符串:";
   cin.getline( s2,100);
   cout<<"拼接后的字符串:  ";
   cout<<stringcat(s1,s2)<<endl;  //将字符串s2拼接到字符串s1后输出s1的内容。  
}
c++
[解决办法]
加*表示指向的内容,表示循环到‘\0’结束符
不加*表示指针变量的地址值
[解决办法]
while( p1++ ) , 这不是要一直等到p1= NULL 的情况才会停止循环。

与 while( *p1++ ) 产生的效果,怎么可能相等
[解决办法]
这样的做法, 一定要保证,p1字符串有足够的空间,足以容纳p2, 否则你懂的。

在溢出边界进行赋值,是对野指针的操作,是不合法的。

热点排行