形参导致实参改变
在形参导致其实参改变即为其在传递时进行的是双向的值传递,就是说在函数进行两个变量之间的交换的时候是值在交换,而不是指针指向的地址在交换。例如:
int main()
{
int i=8,j=9;
int *p,*q;
p=i;//将i的地址赋给指针变量p
q=j;//将j的地址赋给指针变量q
void change(int *p,int *q);//互换i,j的值的函数
change(p,q);
}
void change(int *p,int *q)
{
int temp;
temp=*p;//进行p,q值的替换,此时i,j也发生了变化
*p=*q;
*q=temp;
}
而如果将change函数变为下边的情况的话,变化的就为指针指向的地址,并未改变i,j的值
形参不改变实参值的情况
void change(int *p,int *q)
{int *t;
t=p;
p=q;
q=t;
}