当前位置: 首页 > news >正文

C++学习笔记10:auto关键字

目录

一、什么是auto?

二、auto的基本使用

三、auto和引用

四、auto和指针

五、auto使用时必须初始化

六、auto的使用限制

1.不能用auto定义未初始化变量

2.一行定义多个变量时,类型必须一致

3.auto不能直接作为普通函数参数类型

七、什么时候适合用auto?

八、小结


一、什么是auto?

auto 是 C++11引入的关键字。

它的作用是:

让编译器根据初始化表达式,自动推导变量的类型。

简单来说,就是有些时候我们不用手写变量类型,编译器可以自己判断。

例如:

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 被推导为 char

auto 可以让代码更简洁,尤其是类型比较长的时候很有用。


三、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 时 int,b 是double,类型不一致。


3.auto不能直接作为普通函数参数类型

错误写法:

void func(auto x);

在普通C++函数中,一般不能这样写。

函数参数啦icing应该明确写出:

void func(int x);

七、什么时候适合用auto?

auto 适合用在类型比较明显,或者类型比较复杂的地方。

例如:

auto x = 10; auto y = 3.14;

这种类型很容易看出来。

以后学习 STL 时,auto 会更常用,比如遍历容器:

vector<int> v = {1, 2, 3}; for (auto e : v) { cout << e << endl; }

这样比写长的类型要方便。


八、小结

本篇主要学习了C++中的auto关键字。

需要记住:

  1. auto 是C++11引入的类型推导关键字;
  2. auto 会根据初始化表达式自动推导变量类型;
  3. auto 定义时必须初始化;
  4. auto b = a通常是值拷贝;
  5. auto& b = a才是引用;
  6. auto p = &a可以推导出指针类型;
  7. 一行定义多个auto变量时,类型必须相同。

auto 可以让代码更简洁,但不能滥用。刚开始学习时,还是要先理解变量的真实类型,在考虑使用 auto。

http://www.jsqmd.com/news/825879/

相关文章:

  • 为什么92%的团队GitOps落地失败?DeepSeek内部未公开的4层权限治理模型首次披露
  • AI编程助手规则配置指南:提升Cursor代码生成质量与规范一致性
  • Simics在网络转型与SDN迁移中的核心价值与应用
  • Ghost-Cursor:模拟人类鼠标轨迹,提升Web自动化隐蔽性
  • 自建ChatGPT API代理层:解决密钥管理、限流与成本控制难题
  • Perplexity出版社信息查询全攻略:从API调用到元数据溯源的7步精准定位法
  • Cursor编辑器AI规则配置:提升代码生成质量与团队协作效率
  • ARM CHI接口设计原理与多核系统优化实践
  • 别再只看总mAP了!用pycocotools逐类分析你的目标检测模型(附完整代码)
  • Kubernetes多租户管理策略
  • 2026 年 AI 编程工具终极横评:GitHub Copilot vs Cursor vs Claude Code,万字实测告诉你选哪个
  • 【效率提升】macOS下VirtualBox增强功能深度配置:从丝滑体验到无缝数据共享
  • 基于Feather M4与OLED的复古街机复刻:嵌入式图形编程与物理模拟实践
  • CDN 已经过时了?真正降低延迟的,是“边缘计算”
  • LFMCW相控阵雷达FPGA信号处理系统【附代码】
  • 开源大模型API化实战:用basaran快速部署兼容OpenAI接口的本地模型服务
  • LLM提示词编排引擎:构建复杂AI工作流的核心架构与实践
  • UAV-RIS混合网络中的SCA-AO联合优化框架
  • 从两电平到三电平:手把手教你用Simulink搭建NPC逆变器的SVPWM模型(附模型下载)
  • 数据建模的遗忘指导角色
  • 【2026全新版|收藏级】小白程序员必看!ReAct Agent核心拆解+实战落地
  • LangGraph框架:构建有状态多智能体工作流的Python实践指南
  • AI文本检测技术解析:从原理到实践,构建内容真实性鉴别工具
  • Graph4LLM,图谱增强大模型最新综述:赋能AI的结构化智能
  • 用python计算圆周率PI 小数点后一万位
  • # Git笔记
  • 【权威实测报告】:DeepSeek-R1在2024全国卷I/II/III三套试卷中表现对比,哪些题型仍存“认知断层”?
  • 接入Taotoken后感受到的API调用延迟降低与错误率改善
  • 北航毕业论文LaTeX模板:3步告别格式烦恼,专注学术创作
  • Midjourney极简风出图失败率下降76%的核心参数配置(V6.1专属极简模式深度解锁)