C语言指针相关问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:21:44
C代码中2个指针函数 void x(int *p1,int *p2)
{
int *p;
p=p1;
p1=p2;
p2=p;
}
void x(int *p1,int *p2)
{
int s;
s=*p1;
*p1=*p2;
*p2=s
}
2个指针函有什么区别? 为什么说第一个改变了指针形参的值,难道第二个函数就没改变吗?还有为什么说不能企图改变形参的值而使指针实参的值改变。

第二个函数里面定义用了int s,这一点和第一个函数声明int *p不一样
比如一个变量 int a = 100;
那么指针变量 int * b = &a,取a的地址,那么 *b表示100
但是如果你下面的程序写了 a = 200,那么*b这时候就自动变成了200,这是对a的引用
反过来,如果赋值 *b = 300,那么就是300