在C语言中函数调用的三种方式分别是:传值调用,引用调用和传地址调用。【视频教程推荐:C语言教程】

1、传值调用

传值调用,就是把一个变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,形参运算后在把值返回。

函数中改变的值是不能影响到外界的,因而在函数里对形参的改变不会影响到函数外的变量的值。

下面通过代码示例来理解一下:

#include<stdio.h>  void myswap(int x, int y)  {      int t;      t=x;      x=y;      y=t;  }  int main()  {      int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);      myswap(a,b);  //作为对比,直接交换两个整数,显然不行      printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }

运行:

2.jpg

解析:

没有交互成功原因是:使用传值调用,只在形参上改变了数值,没有在实参上改变数值。

2、传地址调用

传地址调用,就是将变量的地址直接传入函数,它把一个变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。

下面通过代码示例来理解一下:

#include<stdio.h>  void myswap(int *p1, int *p2)  {      int  t;      t=*p1;      *p1=*p2;      *p2=t;  }  int main()  {      int a, b;      printf("请输入待交换的两个整数:");      scanf("%d %d", &a, &b);      myswap(&a,&b);  //交换两个整数的地址      printf("调用交换函数后的结果是:%d 和 %d\n", a, b);      return 0;  }

运行:

3.jpg

解析:

交互成功的原因是:使用传地址调用,利用指针改变了原来的地址,所以实参就交换了。

3、引用调用

引用调用实际是通过指针来实现的,把变量的引用传入函数;能达到使用地址调用的效果,可是使用方式如传值调用,函数可以对其值进行修改。

下面通过代码示例来理解一下:

#include<stdio.h>void myswap(int &x, int &y){    int t;    t=x;    x=y;    y=t;}  int main(){      int a, b;    printf("请输入待交换的两个整数:");    scanf("%d %d", &a, &b);    myswap(a,b);  //注意:这里调用方式与传值调用一样,直接以变量a和b作为实参交换    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}

运行:

4.jpg

解析:

交互成功的原因是:使用引用调用,引用是直接改变两个实参变量a,b的值,所以就交换了。

更多相关文章

  1. 什么是变量的作用域
  2. C中的time()函数怎么用?
  3. C ++中Accessor函数的特征
  4. C中如何声明指向函数的指针?
  5. C/C++函数如何返回多个值?(代码示例)
  6. 【C语言】5种妙招教你轻松搞定变量值交换
  7. C++ vector容器函数使用范例
  8. 什么是虚函数
  9. C++学习之new()和malloc()函数

随机推荐

  1. 史上规模最大的中文知识图谱以及估值两个
  2. 用Python获取公众号阅读数、点赞数。
  3. 数据探索很麻烦?推荐一款史上最强大的特征
  4. 给Python初学者的最好练手项目,进来看就对
  5. 长点心吧年轻人,利率不是这么算的!我用Pyth
  6. 说说开源那些事儿
  7. 5 种方法教你用Python玩转histogram直方
  8. Android(安卓)/ OPhone开发系列教程正在
  9. 公众号正义与黑产对抗史
  10. 如何通过 Tampermonkey 快速查找 JavaScr