声明和定义是完全同的概念,声明是告诉编译器“这个函数或者变量可以在哪找到,它的模样像什么”。而定义则是告诉编译器,“在这里建立变量或函数”,并且为它们分配内存空间。
函数声明与定义:
函数的声明如:int Add(int, int);函数声明就是给函数取名并指定函数的参数类型,返回值类型。值得注意的是,在C语言中,有一点跟C++不同,对于带空参数表的函数如:int func();在C中代表可以带任意参数(任意类型,任意数量),而在C++中代表不带任何参数。
函数的定义如:int Add(int a, int b){} 函数定义看起来跟函数声明很像,但是它有函数体,如果函数体中使用了参数,就必须为参数命名,这里大括号代替了分号的作用。
变量的声明如:extern int i; 在变量定义前加extern关键字表示声明一个变量但不定义它,这对函数同样有效,如:extern int Add(int a, int b);因为没有函数体,编译器必会把它视作声明而不是定义,extern关键字对于函数来说是多余的,可选的。
变量的定义如:int i;如果在此之前没有对i的声明,那么这里既是对它的声明也是对它的定义,编译器会为其分配对应的内存。
真正重要的东西,用眼睛是看不见的。