指针做形参时 实参传递过去的是一个副本(拷贝),第一段程序只是改变了副本所指变量的值,并没有改变实参所指变量的值,也没有改变实参指针的内容,第二段程序改变了实参指针所指变量的内容。
一级指针做形参:首先一定要明白形参和你传递参数的那个实参是两个不同的变量,即使同名也还依然不同。指针传递的是一个变量或者一个值的地址,但是它本身还是采用值传递的方式。即你不能使它指向另外一块地址,但是你可以改变它指向的空间里存的值。
例如如下程序:
#include<iostream> using namespace std; void test(int *p){ int a=4; p=&a; cout<<*p<<endl; } int main(){ int x=3; int *p; p=&x; cout<<x<<endl; test(p); cout<<*p<<endl; return 0; } //输出结果 3 4 3 #include<iostream> using namespace std; void test(int *p){ *p=4; cout<<*p<<endl; } int main(){ int x=3; int *p; p=&x; cout<<x<<endl; test(p); cout<<*p<<endl; return 0; } //输出结果3 4 4