主题:[原创]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运行正确。这是问什么?
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运行正确。这是问什么?