在c语言中,函数调用是否必须先声明?

在c语言中,函数调用是否必须先声明?,第1张

可能有些不声明也能通过,但效率极低,最好先声明。

1、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

2、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

3、二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。

举个例子来说明吧

void foo();

int main()

{

foo();

}

void foo()

{

;

}

以上代码中,第一句就是所谓函数声明。

其实直接用函数定义也就是void foo(){;}替代第一句也是可以的,不过函数的声明让你可以在定义它的代码段之前使用它。

比如以上的例子中,在编译进行到main函数中的foo调用的时候,foo函数还是没有定义的,但我们通过foo的声明告诉了编译器:foo是一个函数的名字,这个函数有着怎样怎样的参数表等等。

声明一个变量或者函数只是将变量名或者函数名标识符的有关信息告诉编译器,使编译器“认识”该标识符,而并一定分配内存。

在C语言中星号()一般有两种意义,一种是和指针相关,用于声明或者作为指针的间接运算符,一种是算术运算符,表示乘法。

 

int main()

{

int a = 2;

int p = &a; //用于指针的定义

a = p  a; // 从左到右第1个表示指针间接运算符,第2个表示乘法

return 0;

}

函数调用是指:简单来讲,假如小明是班长,小红是本班的生活委员,小明要想收班费,但每个人都有不同的职责,而班长是用来组织和统筹工作的,而作为生活委员的小红的职责之一就是收取和管理班费,所以这样的话,小明只需让小红去做就行,也就是说只需发出指令给小红就可以了,而小红就是执行这项活动的承担者;在这里小红就相当于被调用函数,小明是调用函数。

函数调用总共有三种方式:

1 函数表达式:

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

2 函数语句:

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

3 函数实参:

  函数作为另一个函数调用的实际参数出现。这种情况是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返回值的。例如: printf("%d",max(x,y)); 即是把max调用的返回值又作为printf函数的实参来使用的。在函数调用中还应该注意的一个问题是求值顺序的问题。所谓求值顺序是指对实参表中各量是自左至右使用呢,还是自右至左使用。对此,各系统的规定不一定相同。

注意的是:1假如在你的那句调用语句开始,例如:

#include<stdioh>

int max(int x,int y){

if(x>y||x=y)

return x;

else

return y;

}

void main(){

int a,b;

scanf("%d%d",&a,&b) ;

printf("%d",max(a,b));

printf("程序结束\n");

}

在这个函数中,我们是在main()函数中用函数实参进行调用的,这样的话。main()函数是一个程序的入口, 在执行 printf("%d",max(a,b)); 这条语句的max(a,b)时候,开始转到max(int,int)函数中执行,执行完后在回到printf("%d",max(a,b)); 进行输出a,b中的最大值,然后再接着执行main()函数的剩下语句 printf("程序结束\n");推出程序。但我们调用的时候,main()函数(即调用函数)需要给被调用函数提供必要的具体数据,即x,y的值。所以表达式max(a,b)即把a的值赋给x,b的值赋值给y;如此执行下去。

即若输入 3 4

程序结果为: 4 程序结束

2还是上面的那个例子,若int max(int x,int y)在main()函数的下面,要调用的话,就需要在main()函数之前进行声明,声明格式为: 函数返回值类型 函数名 (形参类型1 形参名1,形参类型2 形参名2);其中分号不可少,形参名可以省去,但是形参类型和返回值类型均不可省!!!如下所示:

#include<stdioh>

int max(int x,int y); //函数声明1

或者int max(int ,int ); //函数声明2

void main(){

或者 int max(int x,int y); //函数声明3

或者int max(int ,int ); //函数声明4

int a,b;

scanf("%d%d",&a,&b) ;

printf("%d",max(a,b));

printf("程序结束\n");

}

int max(int x,int y){

if(x>y||x=y)

return x;

else

return y;

}

函数声明的作用是让调用函数认识被调用函数,这样才可以想被调用函数发送指令!

至于为什么用调用这个名字,个人觉得这个是因为很贴切吧,便于理解!!!

你明白了吗?不明白可以追问哦!希望采纳哦!

函数要先声明再使用。。

比如 :

void main()

{

do_func(); //这里调用了一个函数,但是编译器不知道这个函数的存在,所以报错。

}

如果是

void main()

{

void do_func(); //声明就是告诉编译器我有这么一个函数

do_func(); //调用就不会出错了

}

当然。。这个函数具体是什么功能,我们要来定义一下。

void do_func()

{

printf("我是函数");

}

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

原文地址:https://54852.com/langs/13492889.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存