Menu Close

C语言 – 如何调用函数?

1.函数调用

创建C函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。每当我们调用函数时,它都会执行为其设计的操作。 函数调用是程序中的可选部分。

当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。

main函数及函数
main函数及函数

例1.加法函数的调用

#include <stdio.h>
int add(int a, int b); //function declaration
int main()
{
   int a=10,b=20;
   int c=add(10,20); //function call
   printf("Addition:%d\n",c);
   return 0;
}
int add(int a,int b) //function body
{
   int c;
   c=a+b;
   return c;
}

函数的参数用来通过函数调用接收必要的值。 它们按位置匹配: 第一个参数传递给第一个参数,第二个参数传递给第二个参数,依此类推。

默认情况下,参数按值传递,在该值中将数据副本提供给被调用函数。 实际传递的变量不会更改。

实参(argument):
全称为”实际参数”是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

形参(parameter):
全称为”形式参数” 由于它不是实际存在变量,所以又称虚拟变量。是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

一般情况下,我们称传递的是参数。

2.函数的返回值

函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值。

对函数的值(或称函数返回值)有以下一些说明:

1) 函数的值只能通过 return 语句返回主调函数。 return 语句的一般形式为:

return 表达式;

或者为:

return (表达式);

该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个 return语句,但每次调用只能有一个 return 语句被执行,因此只能返回一个函数值。

2) 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。

3) 如函数值为整型,在函数定义时可以省去类型说明。

4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。

 

下例函数 s 并不向主函数返函数值,因此可定义为:

void s(int n)
{
   ……
}

一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。

例如,在定义 s 为空类型后,在主函数中写下述语句

sum=s(n);

就是错误的。

为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为空类型

3.函数调用的方式

在C语言中,可以用以下几种方式调用函数:

1. 函数表达式:函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这种方式要求函数是有返回值的。例如:z=max(x,y)是一个赋值表达式,把 max的返回值赋予变量 z。

2. 函数语句:函数调用的一般形式加上分号即构成函数语句。例如: printf (“%d”,a); scanf (“%d”,&b);都是以函数语句的方式调用函数。

3. 函数实参:函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送 , 因此要求该函数必须是有返回值的 。

例 如 : printf(“%d”,max(x,y)); 即是把 max 调用的返回值又作为 printf 函数的实参来使用的。

4.举例说明函数调用

例4.1 加法函数的调用

#include <stdio.h>

int add (int x, int y);
int main()
{
   int a, b, result;
   a = 5;
   b = 10;
   result = add(a, b);
   printf("%d + %d\ = %d\n", a, b, result);
   return 0;
}

int add (int x, int y)
{
   x += y;
   return(x);
}

 

请记住,传递给add函数的a和b的值不会更改,因为仅将其值传递给了参数x,y。
x+=y (+= 是操作符,也叫运算符。相当于 x=x+y)

 

READ  Python Lambda 匿名函数及其应用
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in C语言教程

Related Posts