有关指针赋值的问题,着急。
简单代码如下:
#include <stdio.h>
void test1(int* px, int* py){
px=py;
}
void test2(int* px, int* py){
*px=*py;
}
void test3(int &m, int & n){//这里用了c++的引用
m=n;
}
int main(){
int x=1;
int y=2;
int z=3;
int m=4;
int n=5;
int * px=&x;
int * py=&y;
int * pz=&z;
test1(px,py);
printf("%d\n",*px);
test2(px,py);
printf("%d\n",*px);
px=pz;//为什么 test1函数不可以改变px的值, 而main函数里直接px=py, 可以改变px的值?
printf("%d\n",*px);
test3(m,n);
printf("%d\n",m);
return 0;
}
输出结果:
1
2
3
5
Press any key to continue
-----------------------------------------------------------------------------------
我的问题是:
1 为什么 test1函数不可以改变px的值? 而test2,test3都可以?
2 为什么 test1函数不可以改变px的值, 而main函数里直接px=py, 可以改变px的值?
回答好的立刻送分,恳求高手指点。