| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9179 人关注过本帖
标题:为什么要进行函数声明呢
只看楼主 加入收藏
Ice_clb
Rank: 1
等 级:新手上路
帖 子:108
专家分:6
注 册:2012-12-3
结帖率:70%
收藏
 问题点数:0 回复次数:7 
为什么要进行函数声明呢
这样噢  我不懂为什么要进行函数声明。
2013-09-02 14:14
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:0 
进行声明,就是告诉后面要使用该函数的代码,这个是什么来的,这就是为什么函数要先声明,后使用,

编写的程序,不能改变世界,却可以改变自己...
2013-09-02 14:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
随便举个例子
你在一个编译单元(相当于一个.c文件中),这样写
int main()
{
    float a = foo( 1 );
}
编译器该怎么编译这个文件呢?
是压入一个int型的1,还是压入一个long型的1,还是压入一个double型的1,……?
对于返回值,是当成float看待呢?还是当成int看待,然后转化为float类型,……?
这些不能确定的话,就无法编译。

假如你当成 float foo( int ); 看待,哪知道另一个.c中是如下定义的,那就牛头不对马嘴
char foo( char c )
{
    return c;
}

不同编译单元因为信息不共享,所以函数必须先声明才可以使用。而对于同一个编译单元,如果允许不声明,那编译时就得扫描两遍,第一个用来确定函数原型,这样的话,编译时间就浪费很多,所以C/C++要求必须提前声明(极度古老的C就不谈的,因为那时只有一个类型int,所以声明不声明都一样,也就是默认类型都是int)。
2013-09-02 14:58
杨为丰
Rank: 2
等 级:论坛游民
帖 子:17
专家分:16
注 册:2013-4-10
收藏
得分:0 
如果把函数的定义放在调用之前必须要用函数声明
2013-09-02 15:21
jg658237
Rank: 7Rank: 7Rank: 7
来 自:青藏高原
等 级:黑侠
帖 子:224
专家分:529
注 册:2013-8-8
收藏
得分:0 
先声明后使用,声明是给函数分配内存单元,
不然怎么用呢?、楼主不要钻牛角尖啊,另外你也太小气了都没有点数..........
小气鬼

武功再高也怕菜刀.
2013-09-02 15:32
lious_scarli
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2013-9-2
收藏
得分:0 
就是个固定的准备工作吧 像吃饭之前要洗手一样
2013-09-02 17:24
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
为什么要问这个问题

思考赐予新生,时间在于定义
2013-09-02 18:36
Rexfield
Rank: 6Rank: 6
来 自:幻想乡
等 级:侠之大者
威 望:1
帖 子:240
专家分:484
注 册:2010-7-28
收藏
得分:0 
和编译器的实现有关,这样便于及时报错。
PS:有些编译器在未声明的情况下调用函数会默认函数的声明为int fun(...)

If you're not failing every now and again, it's a sign you're not doing anything very innovative.
2013-09-02 19:16
快速回复:为什么要进行函数声明呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017730 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved