//------------------------------函数参数传递时的“副本”------------------------------------
// 描述:将指针变量1作为参数传递给另一个函数时,另一个函数会建立一个副本指针变量2来接收这个指针变量所指向
// 变量的地址值,当我们想改变指针变量1所指向的对象时,我们需要把指针变量1的地址值传递过去,而不是传指针变量1所指向变量的地址值。
//------------------------------------------------------------------------------------------
//--------------------------------正确的写法--------------------------------------------
// 描述:正确的写法
//--------------------------------------------------------------------------------------
#include "iostream"
void GetMem(int **p,int num) {
*p = new int[num];
}
int main() {
int *p = NULL;
GetMem(&p, 10);
if (p != NULL) std::cout << "OK" << std::endl;
else std::cout << "No" << std::endl;
return 0;
}
//--------------------------------错误的写法--------------------------------------------
// 描述:错误的写法
//--------------------------------------------------------------------------------------
#include "iostream"
void GetMem(int *p, int num) {
p = new int[num];
}
int main() {
int *p = NULL;
GetMem(p, 10);
if (p != NULL) std::cout << "OK" << std::endl;
else std::cout << "No" << std::endl;
return 0;
}