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的复制,即原来地址的复制;如果在被调用函数中修改了被指向的对象,即指针所指向的地址处的内容时,由于调用函数中的被复制的指针依然指向这块地址,所以,造成了返回后原指针所指向的对象的值的改变。如果在被调用函数中对指针本身进行任何操作,其实都不会对调用函数中的指针造成任何的修改。

评论