回 帖 发 新 帖 刷新版面

主题:[原创]c++中指针和引用的使用不同而程序不同

#include <iostream>
using namespace std;
struct test{
    int a;
    int b;
    friend void h(test*);
    friend void initialize(test*);
};
void h(test *x){
    cout<<x->a<<endl<<x->b<<endl;
}
void initialize(test *x){
    x->a=0;
    x->b=1;
}
int main(){
    test *a;
    initialize(a);
    h(a);
}
#include <iostream>
using namespace std;
struct test{
    int a;
    int b;
    friend void h(test*);
    friend void initialize(test*);
};
void h(test *x){
    cout<<x->a<<endl<<x->b<<endl;
}
void initialize(test *x){
    x->a=0;
    x->b=1;
}
int main(){
    test *a;
    initialize(a);
    h(a);
}
程序运行没有结果调试时指出非法访问

将int main()改为:
int main(){
    test a;
    initialize(&a);
    h(&a);
}
则结果输出0,1运行正确。这是问什么?

回复列表 (共1个回复)

沙发

test *a; 中 a 没有指向一个test对象

我来回复

您尚未登录,请登录后再回复。点此登录或注册