请问C语言中所谓的函数声明是指什么?为什么要进行声明?什么叫做函数声明?

请问C语言中所谓的函数声明是指什么?为什么要进行声明?什么叫做函数声明?,第1张

举个例子来说明吧

void foo();

int main()

{

foo();

}

void foo()

{

;

}

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

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

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

你要的是何时说明吧

printf 格式说明符;

%c --字符

%d --十进制整数

%i --同%d

%e --以科学计数法表示浮点数(指数部分以e表示)

%E --以科学计数法表示浮点数(指数部分以E表示)

%f --浮点数

%g --在%e和%f表示中选取择短的一种

%G --在%E和%f表示中选取择短的一种

%o --无符号八进制整数

%s --字符串

%u --无符号整数

%x --无符号十六进制(小写x)整数

%X --无符号十六进制(大写X)整数

%p --输出指针内容

%n --显示至此printf已输入的字符数

%% --显示百分号

scanf 格式说明符;

%c --读字符

%d --读整数

%i --同%d

%e --读浮点数

%f --读浮点数

%g --读浮点数

%o --读八进制数

%s --读字符串

%x --读十六进制整数

%p --读指针

%n --至此已读入的字符数

%u --读无符号整数

%[] --搜索字符集合

C语言的编译是自顶向下进行的。

这是由C语言的编译器规定的。你可以认为C语言的编译器,就是把你写的C语言代码翻译成计算机能懂的语言的翻译者。翻译者在读你的代码的时候,是从第一行开始向下读的。你写的函数声明,就是告诉翻译者,你定义了一个函数。你写的函数体,就是在告诉翻译者,这个函数声明代表的函数是什么样子的。

我也来 说几句。。

标准编译器 对函数的调用 都要

先申明 才能 调用

(生产的时候就这样设定的)。。我推荐试用

大点的 vs2005,vc2000

小点的 Dev-cpp ,Turboc 30 (20 不支持鼠标有点 麻烦)

这里 就涉及: 申明和定义之间的区别。

申明-- 不开辟内存,仅仅告诉编译器,申明的部分存在,要预留一点空间。

定义-- 开辟内存。

申明 属于 预编译范畴的。最好写在头文件中(楼主,自定义头文件学了没有啊?)(申明都写在头文件中,只是一种好的编程习惯)

因为 在编译的时候,编译器先处理一些特殊数据(宏定义,函数的申明,变量的申明),在这个过程中,编译器 通过申明 可以预测整个定义需要的内存大小,并且 把这些大小预留起来,留给定义的时候使用(因为虽然定义,但是在 main函数里面没有调用,一样的不分配内存)。

如果不事先申明,直接定义,有可能会造成系统崩溃,出现内存不足,不能分配。 然而现在内存都是1G左右了,所以一般空间都足够,所以你也可以不申明直接定义函数。

但是一旦内存紧张,就会出错,而且程序简洁性就很低。(不看到定义,还不知道原来还定义了这么一个函数!!!)

还有 变量也一样,标准的都是 先申明在定义。

extern int i; //申明

int i=0; //定义并初始化为0

int i; //定义

。。。。。。。。。。。。。。。。。

所以 从现在其要养成良好的编程习惯

先申明,在定义。

申明最好都放在 一块,并且都在头文件中(为了便于管理)。

int add(int x int y)

这句话不对,至少应该写成:

int add(int x ,int y)

声明的时候,可以这样写:

int add(int , int )

因为只是声明有这么个函数,名字为何,返回值为何,参数为何。所以不写参数名也可以。但是为了使得声明比较容易读懂(让别人读懂),最好写成这样

int add(int x,int y)

当x,y的名字能帮助阅读函数功能时,特别有用。

至于定义,就是你的函数体了。就是你自己写的那样。

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

原文地址: http://outofmemory.cn/langs/12176791.html

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

发表评论

登录后才能评论

评论列表(0条)

保存