一 默认初始化(default initialized):默认初始化的值由 变量的类型 和 定义变量的位置 决定。
- 如果是内置类型:由定义的位置决定。
例如:
int i ; //变量定义在函数体外部,因此,i的默认初始化为0;
int main()
{
cout << i;
return 0;
}
int main()
{
int i; //变量定义在函数体内部,因此,i的默认值是一个垃圾值(无法预测的值)
cout << i;
return i;
}
//i不会被初始化,如果拷贝或者访问此类值,会引发错误。
类 —-自己决定其初始化对象的方式。而且,是否允许不经过初始化就定义对象也由类自己决定。
建议:初始化每一个内置类型的变量。
2.2.2声明和定义的关系
为了支持分离式编程,C++将声明(declaration)和定义(definition)区分开来。
声明
1,规定变量的类型和名字(相同点)
2,为了让程序知道该变量。但是不申请存储空间定义
1,规定变量的类型和名字(相同点)
2 ,负责创建与名字关联的实体,而且申请空间,也可能会赋一个初始值
如何声明一个变量而非定义它呢?- 在变量名字 前面+extern 关键字,而且,不要显示初始化变量。
extern int i; //声明i而非定义i
int i; //声明并定义i
extern int i = 5; //定义i. 如果在函数体内部有这样的语句,会引发错误。
注:变量只能被定义一次,但是可以声明多次。
2.23 标识符
- 必须以字母和下划线开头。
- (为了给标准库保留一些名字)用户定义的标识符不能连续出现两个下划线,也不能以下划线紧连大写字母开头。