C语言如何调用函数

发布网友 发布时间:2022-04-20 15:42

我来回答

14个回答

热心网友 时间:2022-04-10 01:17

C语言中,函数调用的一般形式为:

函数名(实际参数表)

对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

#include<stdio.h>
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y)  // 函数首部
{  // {}中的语言为函数体
return x>y ? x : y;  // 返回x和y中较大的一个数
}

扩展资料

C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。

这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。 

图表示了两层嵌套的情形。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行。

参考资料:函数调用_百度百科

热心网友 时间:2022-04-10 02:35

C语言调用函数就是先定义并声明函数,之后再根据定义函数的格式调用。


下面举例来说明函数调用方法:

#include<stdio.h>
int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明
void main()
{
    int a=1, b=2, c;
    c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值
}
// 自定义函数fun
int fun(int x, int y)  // 函数首部
{  // {}中的语言为函数体
    return x>y ? x : y;  // 返回x和y中较大的一个数
}

热心网友 时间:2022-04-10 04:09

付费内容限时免费查看回答您稍等一下哦,马上就好,感谢您的等待

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

 登录



塔塔君Minkun

关注

c语言中怎么调用自己定义的函数,c语言中怎么调用自己定义的函数? 转载

2021-05-24 21:19:26

 1点赞

塔塔君Minkun 

码龄4年

关注

一,函数调用的一般形式为:

函数名(实参列表);

实参可以是常数、变量、表达式等,多个实参用逗号,分隔。

在C语言中,函数调用的方式有多种,例如:

在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参列表中各个参数是自左向右使用呢,还是自右向左使用。对此,各系统的规定不一定相同。

【示例】在VC6.0下运行以下代码。

运行结果:

8 7 6 7

可见VC 6.0是按照从右至左的顺序求值。如果按照从左至右求值,结果应为:

9 10 9 8

函数的嵌套调用

函数不能嵌套定义,但可以嵌套调用,也就是在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用,即在被调函数中又调用其它函数。

【示例】计算sum = 1! + 2! + 3! + ... + (n-1)! + n!

分析:可以编写两个函数,一个用来计算阶乘,一个用来计算累加的和。

#include

//求阶乘

long factorial(int n){

int i;

long result=1;

for(i=1; i<=n; i++){

result *= n;

}

return result;

}

// 求累加的和

long sum(long n){

int i;

long result = 0;

for(i=1; i<=n; i++){

//嵌套调用

result += factorial(n);

}

return result;

}

int main(){

printf("1!+2!+...+9!+10! = %ld\n", sum(10));

return 0;

}

二,有些自定义函数可能会被频繁的调用,所以写在一个C文件里是不太方便的。应该把这些自定义的函数写在一个C文件里,同时在一个头文件.h文件里声明。主函数可以通过引用该头文件然后调用需要的自定义函数。

1,举例:在

热心网友 时间:2022-04-10 06:01

#include <stdio.h>
int sum(int x,int y) //声明一个sum函数
{ int z;
z=x+y; //z,x,y在这里就是形式参数,
return z; //z是形式参数,输出的应该是实际参数s,而非z
}

main()
{
int a,b,s; //a,b,s就是实际参数
scanf("%d,%d",&a,&b); //输入时不要忘记 取地址符&
s=sum(a,b);
printf("s=%d",s); /*putchar的功能是向屏幕输出一个字符。其调用格式为putchar(ch);ch为输出项,可以使字符型的常量、变量或表达式*/
return 0;
}
我在您的源程序基础上做了一定修改,并在关键位置给予了注释。如果对您有帮助,请采纳我的回答

热心网友 时间:2022-04-10 08:09

少一个头函数,住函数没有返回值,应该用void。
#include <stdio.h>
#include<conio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=",z);
return z;
}

void main()
{
int a,b,s;
scanf("%d,%d",a,b);
s=sum(a,b);
getch();
}

热心网友 时间:2022-04-10 10:33

我这编译器上你这程序是过不去的,编译就错误,去掉getch();就行,顺便我也来参考学习一下函数更贴近实际应用一点的意义,想想我将来学会了c语言,就能在单片机虚拟机玩嵌入式开发了,不过是要掌握一些io口之类的知识,几年前我学过忘了就差想要的图像采集没学会了,然后我又重新学一遍,感觉有更多的知识有把握去掌握,未来我计划单片机学凑合就去学arm开发,也可以基于c语言,而且运算能力高,最大扩展内存好大的啊,不过是要掌握arm的一些指令集和io口之类的知识估计,反正能省就省走一步看一步吧。

热心网友 时间:2022-04-10 13:15

C语言中,函数调用的一般形式为:

函数名(实际参数表)

对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

热心网友 时间:2022-04-10 16:29

#include
<stdio.h>
#include<math.h>
float
jis(float);
main()
{
float
a,b,c;
float
y1,y2,y3;
printf("Enter
x:
a=
\n");
scanf("%f",&a);
y1=jis(2);
printf("y1=%f",y1);
b=a+15;
y2=jis(b);
printf("y2=%f",y2);
c=sin(a);
y3=jis(c);
printf("y3=%f",y3);
getch();
}
float
jis(float
x)
{
float
y;
y=x*x-5*x+4;
return
y;
}
这样就对了,对了一般不需要用double,float的精度已经够了!还有用数学函数sinx时一定要加上头文件#include<math.h>
希望对你有所帮助!

热心网友 时间:2022-04-10 20:01

static
静态变量
因为它定义在函数中,所以是局部静态变量。局部静态变量,在函数返回后存储单元不释放;下一次调用该函数时,该变量为上次函数返回时的值。

热心网友 时间:2022-04-10 23:49

建议你把不用的变量不要用,例如那个s,你也没用到什么,还有你的结果在sum函数中显示了,为什么还要用到return z这个呢,我有点不明白;.

热心网友 时间:2022-04-11 03:53

你这个编译是成功的.
在函数体内的是实参或是说参加运算的为实参.
形参就是在函数体外的.

热心网友 时间:2022-04-11 08:15

#include <stdio.h>
int sum(int x,int y)
{ int z;
z=x+y;
printf("z=%d",z);
return z;
}
void main()
{ int a,b,s;
scanf("%d%d",&a,&b);
s=sum(a,b);
getch();
}

热心网友 时间:2022-04-11 12:53

你把最后那个getch()改为printf("%d",s)看能行不

热心网友 时间:2022-04-11 17:47

静态变量么
保留上一次的值

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com