c++奇遇记!!!高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:30:04
#include<iostream>
using namespace std;
void main()
{
int i=0;
char *var;
cin>>var;
cout<<var<<endl;
}////////////////错误
#include<iostream>
using namespace std;
void main()
{
char *var;
int i=0;
cin>>var;
cout<<var<<endl;
}//////////////正确
#include<iostream>
using namespace std;
void main()
{
char *var;
cin>>var;
int i=0;
cout<<var<<endl;
}//////////////正确
咋在我的机子上第一个出错,后俩运行正常

哦,指针未分配内存空间嘛!

把char* var;一句改为

char* var=new char();就OK了!

你自己用错了,否则不会出现这种莫名奇妙的问题,首先你定义一个指针还没有分配空间就直接使用,肯定有问题,把char* var; 改为数组char var[256];什么问题都没有了(因为char*只是个指针,它的空间只有4个字节,用来保存地址的,没有分配空间就不能存东西,数组可以):
void main()
{
int i=0;
char var[256];
cin>>var;
cout<<var<<endl;
}

不知道你说的什么意思。
char *var;
这句话只是开了一个指针的空间,指针指向的内容并没有分配。也就是var可能指向一段随机的空间,而这段空间可能事重要的系统数据区,或者其他程序的区域。如果向里面写数据的话可能会造成错误。
三个程序都是这样。我这运行的时候都提示一个warning。然后再次编译的话warning就没了。

建议开辟一个数组。或者用一个string类定义。

三个程序都是错误的,
后两个运行正常,只能说是编译器的问题。