前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数(二)(函数的调用与值传递)

函数(二)(函数的调用与值传递)

作者头像
pigeon
发布2022-04-11 17:55:45
8320
发布2022-04-11 17:55:45
举报
文章被收录于专栏:电子荣耀
函数的调用

函数调用主要有两种方式:函数调用表达式和函数调用语句

1.函数作为表达式的一部分,例如

代码语言:javascript
复制
  big = max(10, 100); //作为赋值表达式的一部分
  printf("%d\n", max(10, 100));  //作为printf函数的实际参数
  sum = max(x, y) + 200; //作为算术表达式的一部分

2.函数调用语句,例如

代码语言:javascript
复制
  printf("Welcome to C\n");

函数调用构成一条单独的语句

程序执行到一个函数调用另一个函数的语句时,程序的执行流程从发生函数调用的位置离开主调函数,转移到被调函数开始执行。被调函数中执行到return语句或执行完最后一条语句时,程序执行流程重新回到主调函数的离开位置,继续执行主调函数后面的语句或表达式。

示例程序如下:

代码语言:javascript
复制
 #include <stdio.h>
   int max(int a, int b)
    {
        int result;
        if(a > b)
            result = a;
        else
           result = b;
        return result;
   }
int main()
   {
       int i = ;
       int j = ;
      int x = max(i, j);
       printf("x=%d\n", x);
       return ;
   }

调用思维图:

函数参数的值传递

调用定义了形参的函数时需要把实参的值传递给形参,前面说过,实参必须与函数定义中的形参在次序和数量上匹配,在数据类型上兼容。

C语言同时规定,实参向形参的传递数据是单向值传递。

例:使用函数实现交换两个整数的值。

参考代码:

代码语言:javascript
复制
#include <stdio.h>
 void swap(int a, int b)
 {
     int temp;
     printf("a=%d, b=%d\n", a, b);
     temp = a;
     a = b;
     b = a;
     printf("a=%d, b=%d\n", a, b);
 }
 int main()
 {
     int x = , y = ;
     printf("x=%d, y=%d\n", x, y);
     swap(x, y);
     printf("x=%d, y=%d\n", x, y);
     return ;
 }

结果示例:

从程序的运行结果可以看出,main函数中实参变量x和y的值并没有发生交换,为什么会出现这样的情况呢?

按照C语言的参数传递规则,实参变量x和y的值分别被“单向传递”给形参变量a和b,swap函数中对变量a和b的值进行了交换,而变量a和b值的变化不会影响实参变量x和y,因此造成上述程序的运行结果。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子荣耀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档