c++ char类型 指针

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:00:05
#include<iostream.h>
main()
{
struct test {
char *str;
int *ip;
} x;
x.ip=new int;
*(x.ip)=100;
cout<<x.ip<<endl;
delete x.ip;
x.str=new char;
*(x.str)='A';
cout<<x.str<<endl;
delete x.str;
}

ip的输出结果是物理地址,
str的输出结果确是 A本身,
多试几次后,发现输出乱码

谁能看看

ip的输出结果正确,但是不对的地方主要在你对x.str的输出之上
*(x.str)='A';
cout<<x.str<<endl; 这个是你的赋值和输出,你把a赋值给x.str,然后输出的时候,不是cout<<*(x.str)<<endl;而是cout<<x.str<<endl; 这样子输出的就是以x.str开头的字符串,直到遇到结束的标志才停止,但是你赋值的时候只给它赋值为一个字符,所以你输出乱码的原因是因为又输出了A后面空间的元素,因为没有碰到结束符,结束的原因是在A后面的内存的那个地方有一个'\0'或者是文件的结束标志,才结束的,你改成cout<<*(x.str)<<endl;就好了

ip的输出结果是物理地址, //是这样啊
str的输出结果确是 A本身,//被当作字符串输出了。