定义:
auto
不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto
声明的变量必须由编译器在编译时期推导而得。
int TestAuto()
{
return 10;
}
int main()
{
int a = 10;
auto b = a; // int
auto c = 'a'; // char
auto d = TestAuto(); // int
//auto e; 无法通过编译,使用auto定义变量时必须对其进行初始化
return 0;
}
auto
使用于循环中
void main()
{
int array[] = { 1, 2, 3, 4, 5 };
for(auto& e : array)
e *= 2;
for(auto e : array)
cout << e << " ";
}
- 必须初始化
//auto e; 无法通过编译,使用auto定义变量时必须对其进行初始化
- 编译的时候自动替换成变量实际的类型
typeid(b).name()
可以显示类型- 在同一行定义多个变量,必须是同类型的
auto c = 3, d = 4.0; // 该行代码会编译失败,因为c和d的初始化表达式类型不同
auto
不能做参数
void TestAuto(auto a)
auto
不能定义数组
auto b[3] = a
auto
不能循环使用指向数组的指针- 必须要有迭代输出的范围
void TestFor(int array[])
{
for(auto& e : array)
cout<< e <<endl; // error
}