要点:每块申请的内存都有它固定的首地址,而我们要做的就是将这个首地址告诉这个“外部指针”,但是这个“外部指针”必须满足以下其中一个条件
(1)传递的是指针的引用
(2)传递的是指针的指针
为什么直接传递指针不可以呢?我们看一个示例:
class A {
public:
A() { cout << "A" << endl; }
~A() { cout << "~A" << endl; }
};
class Ex_AA {
public:
A _a;
};
void init(Ex_AA aa) {
}
int main(void)
{
Ex_AA aa;
init(aa);
}
输出:
A
~A
~A
请按任意键继续. . .
这就是我们常说的值传递了,从上面可以看到调用过程中会产生一个A的副本,结束后A的副本会释放掉。
所以如果是直接传递指针,调用完成后这个指针变量(也就是原指针变量的副本)会释放掉它所存储的地址信息,申请的内存地址仍然没有传递出去!