注册 登录
编程论坛 C++教室

这段代码为什么运行有错,求大侠们指点,

lt2201004068 发布于 2012-04-14 18:16, 376 次点击
#include<iostream>
using namespace std;
#define NULL 0
struct A
{
    int n;
};
struct B
{
    A m;
};

A a;
B *b;

int main()
{
    b=NULL;
    cin>>a.n;
    cout<<a.n<<endl;
    cin>>b->m.n;
    cout<<b->m.n<<endl;
    return 0;
}
2 回复
#2
ab10349827492012-04-14 18:28
你定义了一个指向B类型的指针p ,但是你没有给它分配内存空间;
在使用p时要给它分配内存,所以把主函数稍微修改 改成:

 int main()
 {
     b=NULL;
     b=new B;
     cin>>a.n;
     cout<<a.n<<endl;
     cin>>b->m.n;
     cout<<b->m.n<<endl;
     delete b;
     return 0;
 }
#3
lt22010040682012-04-14 19:40
回复 2楼 ab1034982749
谢了,刚开始这样试了,忘记释放内存了,很感谢,
1