C++中都什么时候需要给一个指针new一段空间啊?

int_tmain(intargc,_TCHAR*argv[]){A*a;a->print();return0;}我这样不new空间为什么会运行出错?... int _tmain(int argc, _TCHAR* argv[])
{
A *a;
a->print();
return 0;
}

我这样不new空间为什么会运行出错?
展开
 我来答
bingyiluo
2008-05-14 · 超过11用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
要new 一段空间是因为如果不初始化,指针就是野指针,它的值是随机的,你访问一个随机的地址当然会出错。它有可能是任何的东西,你如果能确定它随机的那个地址也是你初始化过的一个对象的地址那就不会出错,但是你不能确定,它是随机的,所以必须给它分配一个空间。
fly_fire
2008-05-14 · TA获得超过617个赞
知道小有建树答主
回答量:579
采纳率:0%
帮助的人:305万
展开全部
你的指针必须要指向一个对象才可以(只要指针不为空指针就可以)...
A *a,*b;
a=new A();
b=a;
比如这里b也可以不new,因为它有指向的对象(和a是同一个)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谈指菩提
2008-05-14 · TA获得超过2405个赞
知道大有可为答主
回答量:1073
采纳率:0%
帮助的人:1866万
展开全部
你的a指针没有指向某一内存空间,那么它就不可能执行print()方法,所以会出错。
如果你要执行方法,就需要指定内存空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wz466
2008-05-14 · 超过10用户采纳过TA的回答
知道答主
回答量:18
采纳率:0%
帮助的人:0
展开全部
你现在的指针并没有指向一个具体的对象,属于悬挂指针,所以会有错啊,指针一定要指向一个具体的对象才可以做
p->print()这样的函数调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式