好久没用指针了,有点晕头,随手就写了个Bug,大概长这样:
struct Object{
int type;
};
int get_object(Object *obj)
{
obj = new Object;
obj->type = 1;
return 0;
}
int main()
{
Object *obj = 0;
get_object(obj);
std::cout << "obj:" << obj;
}
输出是 obj:0,obj 为空,为什么呢?
************************************** 让 * 我 * 想 * 一 * 想 ***********************************************
我们一句一句分析:
Object *obj = 0; // ①
int get_object(Object *obj) // ②
{
obj = new Object; // ③
obj->type = 1;
return 0;
} // ④
① 为局部变量 obj 分配栈空间,存储地址0
② 为形参 obj 分配栈空间 (为方便区分,记为obj1),并接收实参 obj 传递进来的数据,赋值为0
③ 申请内存,并将obj1 指向该内存的首地址
④ 函数结束ÿ