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

*p为何是乱码

2012-08-31 
*p为什么是乱码?C/C++ code#include iostreamusing namespace stdint main(){char arrayP[10]abcdefg

*p为什么是乱码?

C/C++ code
#include <iostream>using namespace std;int main(){    char arrayP[10]="abcdefghi";    char arrayP2[10]="abcdefghI";    char* p = arrayP;    char* p2 = arrayP2;    while(*p++=*p2++!='\0');    cout<<*(--p)<<endl;    cout<<*(--p)<<endl;    cout<<*(--p)<<endl;}


[解决办法]
在执行 while(*p++=*p2++!='\0'); 语句的时候,由于 *p2++ !='\0' 条件成立,因此会依次向 p 指向的地址赋值 01,该语句执行完之后,p 指向arrayP数组越界后的第一个内存空间,并且此时arrayP原来的内存空间除了最后一个是‘\0’以外,全部被写为 '\01',因此下面的三个输出函数中,第一个输出空值,后面两个输出乱码。
这个乱码实际上是输出的'\01',楼主可以增添一句 cout<< '\01'; 看看该据输出的字符跟你说的乱码应该是一样的。

热点排行