什么是函数调用?C语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是函数调用?C语言相关的知识,希望对你有一定的参考价值。
通常在C语言中,一个完整的项目程序是不可能在一个函数中实现所有的功能。而是由若干功能不同的函数来实现,并且函数之间会存在互相调用的情况。
函数是C语言的基本组成元素,如果你要想实现函数的功能,那么你就必须学会正确调用函数。当我们调用一个函数时,需要明确函数名和实参列表。实参列表中的参数可以是常量、变量、表达式或者空,并且各参数之间要使用英文逗号分隔开来。
在数学运算中,会遇到计算多个连续自然数之间的和的情况。例如要计算1~n之间自然数之和,就需要先计算1加2的结果,用这个结果加3再得到一个结果,用新得到的结果加4,以此类推,直到用1~(n-1)之间所有数的和加n。
在程序开发中,要想完成上述功能,就需要使用函数的递归调用,所谓的递归调用就是函数内部调用自身的过程。需要注意的是,递归必须要求有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。接下来通过一个计算自然数之和的案例来学习递归调用。
扩展资料
在C++中,为了允许操作符重载和函数重载,C++编译器往往按照某种规则改写每一个入口点的符号名,以便允许同一个名字(具有不同的参数类型或者是不同的作用域)有多个用法,而不会打破现有的基于C的链接器。
这项技术通常被称为名称改编(Name Mangling)或者名称修饰(Name Decoration)。许多C++编译器厂商选择了自己的名称修饰方案。
参考技术A 在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似 参考技术B 函数调用就是在一个函数里调用另一个函数 比如在主函数(main函数)里调用库函数或自定义函数,但在这之前要先声明函数,或者包含头文件(头文件的本质也是函数声明)追问函数申明是什么
追答也就是在使用一个函数之前比如 int add()这个函数,除非它定义在main函数之前,那么在main函数中就要使用int add();这么一句代码提前申明后才能使用,头文件的意义就在此,比如你包含了math.h就可以使用sin()函数,其实math.h中并没有sin()函数的函数体,只是作了申明,然后你就可以使用它了
本回答被提问者采纳 参考技术C 程序中,通过对函数的调用来执行函数体函数调用形式: 函数名([实际参数表])
实参的个数、类型和顺序,应该与被调用函数所要求的参数个数、类型和顺序一致
简单例如:
void main() /* 主函数 */
int num1,num2,num;
int max(int x,int y); //max函数原型
printf(“Input two integer number: ”);
scanf(“%d%d”, &num1,&num2);
num=max(num1,num2);
printf(“max=%d\n”, num);
int max(int x, int y) /*被调函数, 求X与Y的最大值*/
return( x>y ? x : y );
C语言中函数调用怎么返回两个值
在主函数中调用了一个函数,我希望能有两个返回值,在调用函数中怎么去return?好像默认的是只能返回一个值吧!各位,帮帮忙(C 语言)
在C语言中,函数只能返回一个值,要返回两个值,可以改换思路,通过其它方式做到。1 建立数组,返回指针。
在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址,这样就可以实现返回两个值的效果。
需要注意的是,要返回数组首地址,那么返回的值不可以是局部变量,有如下几种是可以的:
a) 使用静态局部变量存储,并返回地址;
b) 使用全局变量存储,返回地址;
c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;
d) 在参数中传入数组地址,并返回。即返回的实际上是主调函数中的变量地址。
2 建立结构体,返回结构体变量。
将需要返回的值,写成结构体形式,并返回结构体变量,这样可以实现一个返回值中含有多组数据。
3 当数据规模较小时,可以采用将小规模数据合并为大规模数据的方式,进行返回。
比如,需要返回两个char型数据时,可以通过返回一个short数据,高地位分别存储各自的值。
除以上方法外,还可以不使用返回值的方式,而是通过函数参数传值,或者全局变量传值等方式,将要返回的值回传给主调函数。 参考技术A return 只能同时返回一个值,要想返回多个值,可以将变量定义为static(静态的),这样在定义变量是就给它分配了内存空间,当函数生命周期结束时,变量的值任然存在,其他函数也可以使用它的值。也可以用指针变量作为函数的形参,改变指针指向的内容,也能达到改变变量值的目的。这两种方法就相当于返回多个值了。本回答被提问者采纳 参考技术B 函数是不能直接返回两个值的,不过可以通过数组,列表,链表等方式,返回多个值。例如
int
a[]
f(),这个函数返回值就是一个整型的数组,如果你要返回两个值,可以定义数组长度为2,a[0]保存第一个值,a[1]保存第二个值。 参考技术C 利用传入指针参数做返回值
例子:
矩阵行列转换,其中b[M][N]就相当于是函数返回的数组
#include "stdio.h"
#define M 3
#define N 2
void swap(int a[M][N],int b[N][M])
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
b[j][i]=a[i][j];
void main()
int i,j;
int a[M][N],b[N][M];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
swap(a,b);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
printf("%d ",b[i][j]);
printf("\n");
参考技术D 在传递给函数的变量中返回。return应该返回的是运行状态,而不是执行之后的运行结果。这是一个普遍的误解……
以上是关于什么是函数调用?C语言的主要内容,如果未能解决你的问题,请参考以下文章