如果调用C语言的自定义函数?

如果调用C语言的自定义函数?,第1张

/
调用函数有2种方式:
(1)直接调用 如:s=hehe(i); 变量=函数名(参数);如无返回值就把变量=去掉
(2)间接调用:用指针函数,指针函数的定义格式
类型(指针名)(函数的参数类型);这个类型跟你要调用的函数的返回值是一样的
参数类型也跟你要调用的函数的参数类型一样,里面只写类型就行
如你定义了一个函数 int hehe(int i);
那么我可以这样调用它:
int(p)(int ),s,i;
p=hehe; //指向这个函数
scanf("%d",&i);
s=(p)(i);
大概就是这样吧,不明白给我留言
/
#include <stdioh> //晕你的头文件写成sdtioh
int main()
{
int hehe(int ); //函数声明应该写明它的返回值和参数类型
int i,s,(p)()=hehe; //函数指针p指向函数hehe
printf("please input i\n");
scanf("%d",&i); //少了个取地址符号
s=hehe(i); //直接调用
printf("(1)hehe(%d)=%d\n",i,s);
s=(p)(i); //用指针函数来调用
printf("(2)hehe(%d)=%d\n",i,s);
getch();
return 0;
}
int hehe(int y)
{
return (y=y+y);
}

intpingfang(x)\x0d\{\x0d\inta=0;//声明局部变量a,并初始化它的值为0。\x0d\x=xx;//计算x的平方并赋给x。\x0d\a=x;//赋值给a。\x0d\returna;//带返回值,返回a。\x0d\}//这是一个子函数,名字pingfang,用于计算输入数的平方。\x0d\voidmain()//这是主函数,无返回值的。\x0d\{\x0d\intb,d;//声明局部变量。\x0d\scanf("%d",&b);//输入b的值\x0d\d=pingfang(b);//调用子函数,计算b的平方,并赋给d。\x0d\printf(“d=%d”,d);//输出d的值\x0d\}\x0d\随手写的一个,可能不是很规范,大概就是这样吧

1函数中的return语句是用来获得函数的返回值的,通过它将被调函数的中一个确定值带回主函数,供主函数使用。
2定义函数的类型是一般应该与return语句的返回值的类型一致。如果不同,则以函数类型为准。
看看这个题(编写函数求Fibonacci级数)
#include "stdioh"
int fib(int n)
{
int z;
if(n<=0) printf("有误");
else
if(n==1||n==2) z=1;
else
z=fib(n-1)+fib(n-2);
return(z);
}
void main(){
int n,i;
for(n=1,i=0;n<=100;n++){
{printf("%10d ",fib(n));
i++;}
if(i%5==0) printf("\n");}
}

自定义函数是由用户按需要写的函数。这与库函数相对应的,库函数是由c系统提供的函数,已经定义好了如printf

scanf

getchar
、putchar、gets、puts、strcat等函数均属此类。
说白了,自定义函数是是自己写的,想实现什么功能就写什么,然后在用的时候和库函数(系统定义的)的一样调用就是了,相当于自己增加了一个自己的库函数。

函数定义好以后,要被其它函数调用了才能被执行。C
语言的函数是能相互调用的,
但在调用函数前,必须对函数的类型进行说明,就算是标准库函数也不例外。标准库函数的
说明会被按功能分别写在不一样的头文件中,使用时只要在文件最前面用#include
预处理语
句引入相应的头文件。如前面一直有使用的
printf
函数说明就是放在文件名为
stdioh

头文件中。调用就是指一个函数体中引用另一个已定义的函数来实现所需要的功能,这个时候函
数体称为主调用函数,函数体中所引用的函数称为被调用函数。一个函数体中能调用数个
其它的函数,这些被调用的函数同样也能调用其它函数,也能嵌套调用。笔者本人认为
主函数只是相对于被调用函数而言。在
c51
语言中有一个函数是不能被其它函数所调用的,
它就是
main
主函数。调用函数的一般形式如下:
函数名
(实际参数表)
“函数名”就是指被调用的函数。实际参数表能为零或多个参数,多个参数时要用逗
号隔开,每个参数的类型、位置应与函数定义时所的形式参数一一对应,它的作用就是把参
数传到被调用函数中的形式参数,如果类型不对应就会产生一些错误。调用的函数是无参函
数时不写参数,但不能省后面的括号。
在以前的一些例子我们也能看不一样的调用方式:
1函数语句

printf
("Hello
World!n");
这是在
我们的第一个程序中出现的,它以
"Hello
World!n"为参数调用
printf
这个库函数。在这里函数调用被看作了一条语句。
2函数参数
“函数参数”这种方式是指被调用函数的返回值当作另一个被调用函数的实际参
数,如
temp=StrToInt(CharB(16));CharB
的返回值作为
StrToInt
函数的实际参数传递。
3函数表达式
而在上一篇的例子中有
temp
=
Count();这样一句,这个时候函数的调用作为一个运算
对象出现在表达式中,能称为函数表达式。例子中
Count()返回一个
int
类型的返回
值直接赋值给
temp。注意的是这种调用方式要求被调用的函数能返回一个同类型的值,
不然会出现不可预料的错误。
前面说到调用函数前要对被调用的函数进行说明。标准库函数只要用#include
引入已
写好说明的头文件,在程序就能直接调用函数了。如调用的是自定义的函数则要用如下形
式编写函数类型说明
类型标识符
函数的名称(形式参数表);
这样的说明方式是用在被调函数定义和主调函数是在同一文件中。你也能把这些写到
文件名h
的文件中用#include
"文件名h"引入。如果被调函数的定义和主调函数不是在同
一文件中的,则要用如下的方式进行说明,说明被调函数的定义在同一项目的不一样文件之上,
其实库函数的头文件也是如此说明库函数的,如果说明的函数也能称为外部函数。
extern
类型标识符
函数的名称(形式参数表);
函数的定义和说明是完全不一样的,在编译的角度上看函数的定义是把函数编译存放在
ROM
的某一段地址上,而函数说明是告诉编译器要在程序中使用那些函数并确定函数的地
址。如果在同一文件中被调函数的定义在主调函数之前,这个时候能不用说明函数类型。也就
是说在
main
函数之前定义的函数,在程序中就能不用写函数类型说明了。能在一个函
数体调用另一个函数(嵌套调用),但不允许在一个函数定义中定义另一个函数。还要注意
的是函数定义和说明中的“类型、形参表、名称”等都要相一致。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12605422.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存