
目录一、什么是auto二、auto的基本使用三、auto和引用四、auto和指针五、auto使用时必须初始化六、auto的使用限制1.不能用auto定义未初始化变量2.一行定义多个变量时类型必须一致3.auto不能直接作为普通函数参数类型七、什么时候适合用auto八、小结一、什么是autoauto 是 C11引入的关键字。它的作用是让编译器根据初始化表达式自动推导变量的类型。简单来说就是有些时候我们不用手写变量类型编译器可以自己判断。例如int a 10; auto b a;这里 a 是 int 类型所以编译器会自动推导出 b 也是 int 类型。上面的代码等价于int b a;二、auto的基本使用示例#include iostream using namespace std; int main() { int a 10; double b 3.14; char c A; auto x a; auto y b; auto z c; cout x endl; cout y endl; cout z endl; return 0; }在这段代码中cout x endl; // x 被推导为 int cout y endl; // y 被推导为 double cout z endl; // z 被推导为 charauto 可以让代码更简洁尤其是类型比较长的时候很有用。三、auto和引用需要注意auto b a;这种写法一般推导出来的是普通变量不是引用。如果想让b成为a的因哟个需要写成auto b a;示例#include iostream using namespace std; int main() { int a 10; auto b a; b 20; cout a endl; cout b endl; return 0; }运行结果20 20四、auto和指针auto 也可以推导指针类型。例如int a 10; int*p a;也可以写成auto p a;因为 a 的类型是 int* 所以 p 会被推到为 int*。也可以写成auto* p a;这两种写法都可以auto p a; // p 被推导为 int* auto* p a; // p 被推导为 int*不过 auto* 写法更明显一眼能看出开是一个指针。五、auto使用时必须初始化auto 需要根据初始化表达式推导类型所以定义时必须初始化。错误写法auto a;因为没有初始值编译器不知道 a 应该是什么类型。正确写法auto a 10; auto b 3.14; auto c A;六、auto的使用限制auto 虽然很方便但不是所有地方都能用。1.不能用auto定义未初始化变量auto a; // 错误必须写成auto a 10;2.一行定义多个变量时类型必须一致正确auto a 1, b 2;因为 a 和 b都是 int 类型。错误auto a 1, b 3.14;因为 a 时 intb 是double类型不一致。3.auto不能直接作为普通函数参数类型错误写法void func(auto x);在普通C函数中一般不能这样写。函数参数啦icing应该明确写出void func(int x);七、什么时候适合用autoauto 适合用在类型比较明显或者类型比较复杂的地方。例如auto x 10; auto y 3.14;这种类型很容易看出来。以后学习 STL 时auto 会更常用比如遍历容器vectorint v {1, 2, 3}; for (auto e : v) { cout e endl; }这样比写长的类型要方便。八、小结本篇主要学习了C中的auto关键字。需要记住auto 是C11引入的类型推导关键字auto 会根据初始化表达式自动推导变量类型auto 定义时必须初始化auto b a通常是值拷贝auto b a才是引用auto p a可以推导出指针类型一行定义多个auto变量时类型必须相同。auto 可以让代码更简洁但不能滥用。刚开始学习时还是要先理解变量的真实类型在考虑使用 auto。