void test(int* p)
{
*p = 2;
p = NULL;
}
int main(int argc, char * argv[])
{
int te = 3;
cout<<"te = "<<te<<endl;
int *pTe = &te;
cout<<"*pTe = "<<*pTe <<endl;
cout<<"pTe = "<<pTe <<endl;
test(pTe);
cout<<"After test()\n*pTe = "<<*pTe <<endl;
cout<<"pTe = "<<pTe <<endl;
system("pause");
return 0;
}
输出:
te = 3
*pTe = 3
pTe = 0013FF38
After test()
*pTe = 2
pTe = 0013FF38
Press any key to continue . . .
说明:
函数的形参可以是指针,此时将复制实参指针。与其他非引用类型的形参一样,该类形参的任何改变也仅作用于局部副本。如果函数将新指针赋给形参,主调函数使用的实参指针的值没有改变。
当函数调用的时候,传递给被调用函数一个指针变量p的复制,即原来地址的复制;如果在被调用函数中修改了被指向的对象,即指针所指向的地址处的内容时,由于调用函数中的被复制的指针依然指向这块地址,所以,造成了返回后原指针所指向的对象的值的改变。如果在被调用函数中对指针本身进行任何操作,其实都不会对调用函数中的指针造成任何的修改。
评论