什么是声明:有两重含义,如下:
创新互联公司专业提供成都主机托管四川主机托管成都服务器托管四川服务器托管,支持按月付款!我们的承诺:贵族品质、平民价格,机房位于中国电信/网通/移动机房,中国电信云锦天府服务有保障!
第一重含义:告诉编译器,这个名字已经匹配到一块内存上了(伊人已嫁,吾将何去何
从?何以解忧,唯有稀粥),下面的代码用到变量或对象是在别的地方定义的.声明可以出
现多次.
第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量
名或对象名.比如你在图书馆自习室的某个座位上放了一本书,表明这个座位已经有人预
订,别人再也不允许使用这个座位.其实这个时候你本人并没有坐在这个座位上.这种声
明最典型的例子就是函数参数的声明,例如:
void fun(int i, char c);好,这样一解释,我们可以很清楚的判断:a)是定义;b)是声明.
就是告诉编译器,这个函数已经存在,和这个函数具体是什么格式的,名称是什么,返回值是什么,数据个数和类型分别是什么,以后在用到这个函数的时候编译器就按照这个声明的格式来检查函数的使用是否正确
就是告诉编译器函数的类型,名称,使用的参数的类型。
就是告诉编译器将要调用此函数。
就是告诉编译器将要调用此函数。
就是告诉编译器将要调用此函数。
函数声明是让代码调用点知道按照什么格式来调用函数。
(函数参数列表是什么,返回值是什么。)
否则调用点无法确知调用函数的格式。
(注:在C里也可以无函数声明就调用,那样会在程序链接的时候做调用匹配检查。但这非常非常不推荐这样做。
C++则完全屏蔽这种可能,如果出现未声明的调用,则直接编译报错。)
举个例子来说明吧
void foo();
int main()
{
foo();
}
void foo()
{
;
}
以上代码中,第一句就是所谓函数声明。
其实直接用函数定义也就是void foo(){;}替代第一句也是可以的,不过函数的声明让你可以在定义它的代码段之前使用它。
比如以上的例子中,在编译进行到main函数中的foo调用的时候,foo函数还是没有定义的,但我们通过foo的声明告诉了编译器:foo是一个函数的名字,这个函数有着怎样怎样的参数表等等。