c语言函数调用带参数,C语言函数 -C语言函数调用和参数传递

C语言函数被定义以后可以被多次调用,调用的时候可以向它传递参数。

C语言函数调用

函数的调用指的就是函数的使用方法。

在程序中使用已经定义的函数,可以使用函数调用表达式,其一般格式如下:

函数名(实参1, 实参2, …) //实参对应于函数定义时的形参声明

程序执行时,函数调用表达式将会被函数返回值所代替(见图 1)。函数的返回值一般由 return 语句指定。

a01b0cd5a67aa2913932c97ed19bfa7d.gif

图 1:函数调用时参数的传递(值传递)和值的返回

程序运行中进行函数调用后,程序的流程会转到被调用的函数处,同时传递过来的实参的值被赋值给函数对应的形参(形参初始化),接着执行函数体语句,在遇到 return 语句,或者执行到函数体最后的大括号时,程序流程就会从该函数跳转到原来调用函数的位置(见图 2)。

e0e333913d54bcd4a6b657704905d5c4.gif

图 2:调用函数时程序的执行流程

代码清单 1:使用函数求两个整数中较大的值

#include

#include

/*---自定义函数Max2:返回较大值---*/

int Max2 (int a, int b)

{

if(a>b)

return a;

else

return b;

}

/*---主函数---*/

int main( )

{

int n1,n2;

puts("请输入两个整数。\n");

printf("整数1:"); scanf("%d",&n1);

printf("整数2:"); scanf("%d",&n2);

printf("较大的值是%d \n",Max2(n1,n2)); //调用Max2函数

system("pause");

return 0;

}

运行结果为:

请输入两个整数。

整数1:66

整数2:47

较大的值是66

知识点总结

函数调用的形式是在函数名后面加上小括号“()”。

函数调用时,小括号“()”中的参数称为“实参”。

函数调用的形式可称为“函数的调用表达式”。

函数调用表达式的值就是函数的返回值。

函数调用时参数的传递:值传递

上面的代码清单 1 中,main( ) 函数通过 Max2(n1,n2) 调用自定义函数 Max2 时,实参变量 n1 的值被赋值给 Max2 的形参变量 a,实参变量 n2 的值被赋值给 Max2 的形参变量 b,此时,a 是 n1 的副本,两者具有相同的值,b 是 n2 的副本,两者具有相同的值。像这样通过值来进行参数传递的机制称为值传递。

由于函数间参数的传递是通过值传递进行的,所以,函数调用表达式中的实参可以是另一个有返回值的函数调用表达式(见图 3)。

d2378c348a6934c2d72300082d2d0e07.gif

图 3:将函数的返回值作为参数传递给函数

知识点总结

函数间参数的传递是通过值的传递进行的。

函数调用时实参的值会被赋给形参。

形参所指的变量是对应的实参所指的变量的副本,它们具有相同的值。

3. 函数调用时数组的传递

自定义函数中,如果形参接收的是一个数组,则定义函数时要在形参声明中加上[ ]。而在函数调用表达式中的实参则直接使用数组名即可(见图 4)。

指向数组的形参声明格式如下:

类型名 形参名[ ] //形参名与指向的原数组名不同

//类型名与数组的数据类型相同

4b6c789c7fbad8062103cdcbb7d6a373.gif

图 4:函数调用中数组和变量值的传递

代码清单 2:使用函数(数组的传递)计算数学成绩和英语成绩的最高分

#include

#include

#define NUMBER 5

/*--自定义函数:返回拥有n个元素的数组v中的最大值--*/

int Max_of(int v[],int n)

{

int i,max=0;

for(i=0;i

if(v[i]>max) max=v[i];

return max;

}

/*---主函数---*/

int main()

{

system("color 70");

int i,eng[NUMBER],math[NUMBER],max_e,max_m;

printf("请输入%d名学生的成绩。\n",NUMBER);

for(i=0;i

printf("[%d]英语:",i+1); scanf("%d",&eng[i]);

printf(" 数学:"); scanf("%d",&math[i]);

}

max_e=Max_of(eng,NUMBER); //调用Max_of函数

max_m=Max_of(math,NUMBER); //调用Max_of函数

printf("英语最高分=%d\n",max_e);

printf("数学最高分=%d\n",max_m);

system("pause");

return 0;

}

运行结果为:

请输入5名学生的成绩。

[1]英语:89

数学:78

[2]英语:77

数学:88

[3]英语:79

数学:83

[4]英语:71

数学:87

[5]英语:70

数学:96

英语最高分=89

数学最高分=96

图 5 展示了函数调用中数组的传递和变量值传递的区别。

f0ce3505c5988c71e090ac3c46c0fed1.gif

图 5:函数调用中数组的传递和变量值传递的区别

知识点总结

函数内接收数组的形参所指的数组就是原数组本身,只是数组名改变为形参的参数名而已(有别于一般变量参数值的传递)。

在函数内对形参数组的修改实际上就是对实参数组(原数组)的修改。

在函数内改变形参变量的值不会影响实参变量。

  • 9
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值