尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
数据类型、引用与auto
数据类型、引用与autoC 在 C 类型系统上的扩展在 C 语言数据类型与变量 中我们学习了int、float、char等基本类型。C 完全保留了这些类型并在此基础上增加了bool、引用、auto等重要特性同时提供了类型安全的iostream输入输出。本篇聚焦 C 相对 C 的类型与 I/O 扩展整型、浮点、字符等基础内容请参阅 C 教程。一、C 基本数据类型回顾与扩展1.1 与 C 兼容的基本类型C 支持 C 的所有基本类型char、short、int、long、float、double等。用法与 C 相同。详细说明见 C 语言数据类型与变量。1.2 C 特有bool 类型C 内置布尔类型bool取值为true或false#includeiostreamintmain(){boolisReadytrue;boolisEmptyfalse;std::coutstd::boolalpha;// 输出 true/false 而非 1/0std::coutisReady: isReadystd::endl;std::coutisEmpty: isEmptystd::endl;intscore85;boolpassed(score60);std::coutpassed: passedstd::endl;return0;}对比CC布尔类型无用 int 0/1 模拟booltrue/false条件判断非零为真同左但 bool 语义更清晰二、引用Reference2.1 什么是引用引用是变量的别名——定义时必须初始化且之后不能绑定到其他对象#includeiostreamintmain(){intoriginal42;intreforiginal;// ref 是 original 的别名ref100;std::coutoriginal: originalstd::endl;// 100std::coutref: refstd::endl;// 100return0;}2.2 引用 vs 指针特性引用int指针int*初始化必须初始化可为空NULL/nullptr重新绑定不能可以指向其他对象解引用直接使用无需*需要*解引用空值不存在空引用可以 nullptr主要用途函数参数、返回值动态内存、可选值voidswap(inta,intb){inttempa;ab;btemp;}intmain(){intx1,y2;swap(x,y);// 直接修改 x、y无需传地址std::coutx, ystd::endl;// 2, 1return0;}指针的完整讲解见 C 语言指针。C 中优先用引用传递非空对象用指针表示可选或动态内存。2.3 const 引用不能通过 const 引用修改原对象常用于函数参数以避免拷贝voidprint(conststd::strings){std::coutsstd::endl;// s other; // 错误不能修改}三、auto 与类型推导C113.1 auto 关键字编译器根据初始化表达式自动推导类型#includeiostream#includevectorintmain(){autoi42;// intautod3.14;// doubleautosstd::string(hello);// std::stringstd::vectorintvec{1,2,3};for(autoitvec.begin();it!vec.end();it){std::cout*it ;}std::coutstd::endl;return0;}3.2 使用建议场景是否推荐 auto迭代器、复杂模板类型推荐简单整型、浮点可选显式类型更清晰函数返回值谨慎需确保可读性3.3 decltype获取表达式的类型常用于模板元编程intx0;decltype(x)y10;// y 的类型与 x 相同为 int四、const 与 constexpr4.1 const与 C 类似表示只读constintMAX_SIZE100;constdoublePI3.14159;4.2 constexprC11编译期常量值在编译时确定constexprintBUFFER_SIZE256;constexprintsquare(intn){returnn*n;}intmain(){intarr[square(5)];// 数组大小为 25编译期确定return0;}五、iostream 输入输出5.1 标准输出 cout#includeiostreamintmain(){intage25;doubleheight1.75;std::cout年龄agestd::endl;std::cout身高height 米std::endl;return0;}与 printf 对比特性printfcout类型安全需手动匹配格式符编译期检查语法printf(%d, x)cout x扩展性固定可重载5.2 标准输入 cin#includeiostreamintmain(){inta,b;std::cout请输入两个整数;std::cinab;std::cout和为abstd::endl;return0;}C 的scanf/printf在 C 中仍可用#include cstdio但推荐优先使用 iostream。5.3 常用操纵符#includeiostream#includeiomanipintmain(){doublepi3.14159265;std::coutstd::fixedstd::setprecision(2)pistd::endl;// 3.14std::coutstd::boolalphatruestd::endl;// truereturn0;}六、类型大小与 sizeof与 C 相同sizeof返回类型或变量占用的字节数#includeiostreamintmain(){std::coutsizeof(int): sizeof(int)std::endl;std::coutsizeof(bool): sizeof(bool)std::endl;std::coutsizeof(double): sizeof(double)std::endl;return0;}七、实战练习练习1引用交换编写void swap(int a, int b)在 main 中验证交换效果。练习2auto 推导声明多个auto变量用typeid或编译器推断确认其类型#includetypeinfo#includeiostreamintmain(){autox10;autoy3.14;std::couttypeid(x).name()std::endl;std::couttypeid(y).name()std::endl;return0;}练习3iostream 计算器用cin/cout实现两数加减乘除对比 C 版scanf/printf的实现。八、总结与延伸本节重点回顾C 保留 C 基本类型新增bool类型引用是别名必须初始化常用于函数参数避免拷贝auto让编译器推导类型简化复杂类型声明iostreamcout/cin提供类型安全的 I/O推荐替代 printf/scanfconstexpr用于编译期常量与函数下节预告下一篇将进入核心语法阶段《运算符与表达式C 扩展特性》学习 new/delete 等 C 运算符。延伸阅读C 语言数据类型与变量C 语言指针C 速查数据类型与引用知识点卡片booltrue/false引用T必须初始化是别名auto编译期类型推导const 引用const T用于只读参数输出std::cout x std::endl输入std::cin xC 基础类型用法见 C 教程C 增量重点在引用、bool、iostream小技巧函数参数中大对象用const T传递避免拷贝简单循环变量可写for (auto i 0; i n; i)⚠️注意事项引用必须初始化不能为空不要返回局部变量的引用或指针悬垂引用混用 cout 与 printf 时注意缓冲区刷新如果你对数据类型与引用有疑问欢迎在评论区留言下一篇见
RELATED

相关推荐

CORDIC算法与状态机实现:硬件三角函数计算的核心原理与实践

CORDIC算法与状态机实现:硬件三角函数计算的核心原理与实践

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。COS自动状态机这个名字听起来像是一个专门处理三角函数计算的状态机实现,结合热词里的CORDIC IP核和正弦波生成,它很可能是在FPGA或嵌入式场景下,用状态机的…

📅 2026/8/24 2:21:33
逆向美团外卖mtgsig 1.2签名算法:Python实现与风控对抗实战

逆向美团外卖mtgsig 1.2签名算法:Python实现与风控对抗实战

1. 项目概述:从一次失败的请求说起做爬虫或者数据采集的朋友,估计都遇到过美团外卖这个“硬骨头”。你可能兴致勃勃地写好了requests代码,模拟了headers,甚至把cookies都处理得妥妥当当,但一发送请求,返回的…

📅 2026/9/9 16:10:13
LabVIEW与Matlab混合编程实现小波去噪的工程实践

LabVIEW与Matlab混合编程实现小波去噪的工程实践

1. 为什么需要LabVIEW和Matlab混合编程的小波去噪方案在工业测量和信号处理领域,我们常常遇到这样的场景:传感器采集的振动信号中混杂着各种噪声,工程师需要快速验证去噪效果,但传统LabVIEW的Butterworth滤波器对非平稳信号处理效…

📅 2026/8/24 2:22:10
MORE NEWS

更多资讯

📰

中国汽车空气悬架技术突破与国际供应链机遇

1. 孔辉科技获奥迪海外定点的行业意义当一家中国汽车零部件企业进入奥迪全球供应链体系,这绝非简单的商业合作。作为全球豪华车市场的标杆品牌,奥迪对供应商的筛选标准向来以严苛著称。此次孔辉科技获得海外定点,标志着中国汽车科技企业在核心…

📰

MESH自组网对讲:无基站也能组网的应急通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Excel数据导入MySQL全攻略:从CSV到LOAD DATA的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

嵌入式固件启动故障三层定位法:从现象到寄存器再到二进制

1. 这不是又一篇“启动流程图解”,而是一套能直接用在产线上的固件排障方法论 你手头正调试一块基于 Cortex-M4 的工业传感器模组,上电后 LED 不亮、串口无任何输出,J-Link 能识别芯片但无法 halt —— 是 BootROM 锁死了?是 Flas…

📰

WSUS漏洞CVE-2025-59287深度解析:未认证远程代码执行的危害与加固

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

嵌入式SD卡实战:从协议原理到MicroPython驱动与文件系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬