首先,父函数调用子函数,子函数如果想修改父函数的值,则必须传变量的指针并在子函数中解引用。
换而言之,子函数的改变要影响父函数,则父函数需要传指针,子函数需要解引用。
例:
(1)
void Swap_arr1(int a,int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
(2)
void Swap_arr2(int *p1,int *p2) //指针接收;
{
int *tmp;
tmp = p1;
p1 = p2;
p2 = tmp;
}
(3)
void Swap_arr3(int *p1,int *p2) //指针接收;
{
int *tmp; //野指针,悬挂指针;即没有访问权限的指针(地址)
*tmp = *p1;
*p1 = *p2;
*p2 = *tmp;
}
(4)
void Swap(int *p1,int *p2)
{
int tmp;
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
int main()
{
int a = 10;
int b = 20;
Swap_arr1(a,b);//调用函数;
Swap_arr2(&a,&b);
Swap(&a,&b);
printf(“%d,%d\n”,a,b);
printf(“%d,%d\n”,a,b);
printf(“%d,%d\n”,a,b);
return 0;
}
输出:(1) 10,20;
(2) 10,20;
(3) 程序崩溃;
(4) 20,10;
程序执行过程如下