写代码过程中写出了错误代码,才注意到自己使用指针存在这样的思维误区。
// 错误函数
void test(int *x)
{
x = new int(3);
}
int *value = NULL;
test(value);
这个test函数是没有任何意义的一个函数,运行结果value最终还是NULL空指针,其实函数的参数传递根本上还是值传递,指针也不过是值的一种而已。
将int指针value传递进去时,test内的x最开始是null,在new int(3)后,new关键字给x分配了一个地址,这个时候x和value已经没有任何一丝关系了。
所以不能通过参数传递指针,然后在函数内部new。