变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定bai义。
变量声明:用于向程序表明变量的类型和名字。
区别:
定义也是声明,extern声明不是定义。定义分配存储空间,而声明不会。通过使用extern关键字声明变量名而不定义它。 事实上它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。
只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。
例如:extern int a其中变量a是在别的文件中定义的。前者是"定义性声明(defining declaration)“或者称为"定义(definition)”,而后者是"引用性声明(referncing declaration)"。
c++函数的默认参数在哪里定义?
答:函数原型声明里和函数定义中都行。但是必须满足两个规则:
1.只能在函数声明和函数定义中选一个,不能两个都定义默认参数。
2.默认参数无论定义在函数声明还是函数定义中,必须位于调用该函数的函数前面。
例子:可以通过编译:
#include <iostream>
using namespace std;
int add(int m1, int m2, int m3, int m4);
int add(int m1, int m2, int m3=0, int m4=0) {
return m1+m2+m3+m4;
}
void main() {
cout << add(1, 3) << "," << add(1, 3, 5) << "," << add(1, 3, 5, 7) << endl;
}
不能通过编译的例子:
#include <iostream>
using namespace std;
int add(int m1, int m2, int m3, int m4);
void main() {
cout << add(1, 3) << "," << add(1, 3, 5) << "," << add(1, 3, 5, 7) << endl;
}
int add(int m1, int m2, int m3=0, int m4=0) {
return m1+m2+m3+m4;
}