默认初始化:
如果定义变量时没有指定初值,则变量被“默认初始化”。
默认值由什么决定?
1.变量类型。
2.定义变量的位置。
如果是内置类型的变量,则其值由定义的位置决定==>定义在任何函数体之外的变量都被初始化为0,或许可以理解为全局变量的就初始为0。
一种例外,定义在函数体内部的内置类型变量将不被初始化,一个未被初始化的内置类型变量的值是未定义的,如果试图拷贝或以其他形式访问此类值将引发错误。
建议:初始化每一个内置类型的变量!
#include <iostream>
using namespace std;
int a1[6];
void print(int *p, int len) {
for (size_t i = 0; i != len; ++i) {
cout << *(p+i) << ", ";
}
cout << endl;
}
int main()
{
int a2[5];
print(a1, 6); // 0, 0, 0, 0, 0, 0
print(a2, 5); // 0, 0, 0, 0, 1439370272
return 0;
}
类内初始值:
c++11,可以为类内的数据成员提供一个初始值,没有初始值的成员将被默认初始化。
值初始化:
手动给一个初始化值