关于“传地址,解引用”的举例

  • Post author:
  • Post category:其他


首先,父函数调用子函数,子函数如果想修改父函数的值,则必须传变量的指针并在子函数中解引用。

换而言之,子函数的改变要影响父函数,则父函数需要传指针,子函数需要解引用。

例:

(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;

程序执行过程如下

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述



版权声明:本文为jian_xiaohui原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。