当前位置:   article > 正文

c语言——指针作为函数形参,改变实参的值的问题。_c语言指针作为形参改变实参

c语言指针作为形参改变实参

c语言中函数调用时会发生形参实例化,讲人话就是说在函数调用时形参会生成临时变量,在栈上开辟空间,形成该函数所对应的栈帧,函数内的定义的变量在该函数的栈帧内开辟空间,在函数调用结束时,该函数的栈帧就会释放。其在函数调用时形成的临时变量也会释放。所以一般的传值传参不会改变实参的值。但是若是函数的形参是指针变量的话在调用函数时将变量的地址传递给指针,在函数内部对函数进行解引用改变指针的值那么相应实参所对应开辟空间的里的值会改变,但其地址仍不变。这就是所谓的传址传参。这种传参方式可以让函数和函数外边的变量建立起真正的联系。如这里举一个最简单的例子,交换两个变量的值。

  1. //址传递
  2. include <stdio.h>
  3. int main()
  4. {
  5. int a = 4, b = 5;
  6. Change(&a, &b);
  7. printf("%d %d", a,b);//输出结果为5 4
  8. system("pause");
  9. return 0
  10. }
  11. void Change(int *x, int *y)
  12. {
  13. int temp;
  14. temp = *x;
  15. *x = *y;
  16. *y = temp;
  17. }

结果为:

  1. //值传递
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int a = 4, b = 5;
  6. void Swep(a, b);
  7. printf("%d %d", a, b);
  8. system("pause");
  9. }
  10. void Swep(int x, int y)
  11. {
  12. int temp;
  13. temp = x;
  14. x = y;
  15. y = temp;
  16. }

结果为

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/tf789/article/detail/63093
推荐阅读
相关标签
  

闽ICP备14008679号