【C++】基础知识点回顾 下:auto关键字、范围内的for循环

news2024/10/7 7:24:08

前言

前两篇文章,我们分别复习了这些知识点
命名空间与输入输出

函数重载、引用和内联函数

今天,我们来学习auto关键字、范围内的for循环

auto关键字

定义

C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得

补充知识点:typeid

在C++中,typeid是一个运算符,用于获取表达式的类型信息。当你调用typeid(d).name() 时,它将返回一个表示表达式的类型的字符串。这个字符串通常是编译器特定的,可能不易于阅读,但可以用于调试或其他目的。

要使用typeid,你需要包含头文件<typeinfo>。

例子:

#include<iostream>
#include<typeinfo>

using namespace std;

int main()
{
	int a = 0;
	char c = 'a';

	cout << typeid(a).name() << endl;
	cout << typeid(c).name() << endl;

	return 0;
}

运行结果:

在这里插入图片描述
学习过运算符typeid之后,我们来继续学习auto
上面提到了,auto会自动推导变量的类型,下面给出一段代码,方便大家理解

#include<iostream>
#include<typeinfo>

using namespace std;

int XX()
{
	return 1;
}

int main()
{
	auto i = 1;
	auto c = 'c';
	int a = 10;
	auto b = a;
	auto x = XX();

	cout << typeid(i).name() << endl;
	cout << typeid(c).name() << endl;
	cout << typeid(b).name() << endl;
	cout << typeid(x).name() << endl;

	return 0;
}

运行结果:
在这里插入图片描述
通过上面这段代码,我们可以知道,auto可以自动推导元素的类型

详细规则

变量初始化

1.使用auto时,必须对其修饰的变量进行初始化,不然编译器无法得知该变量是什么类型,会报错

auto与指针和引用

2.auto和指针以及引用结合使用
需要注意的是:
auto和指针结合使用的时候,*可写可不写

auto和引用结合使用的时候,&必须写

下面给出一段示例代码

#include<iostream>
#include<typeinfo>

using namespace std;

int main()
{
	int x = 10;
	auto a = &x;
	auto* b = &x;
	auto& c = x;
	cout << typeid(a).name() << endl;
	cout << typeid(b).name() << endl;
	cout << typeid(c).name() << endl;

	*a = 20;
	cout << x << endl;

	*b = 30;
	cout << x << endl;

	c = 40;
	cout << x << endl;

	return 0;
}

运行结果:
在这里插入图片描述

一次定义多个变量

在同一行定义多个变量的时候,要注意:这些变量的类型都必须相同
不然程序会报错

下面给出一个例子:

#include<iostream>

using namespace std;

int main()
{
	auto a = 1, b = 2, c = 3;

	return 0;
}

auto不能做的

auto定义的变量不能作为函数的参数

auto不能直接定义数组

范围内的for循环

定义

在C++11中,引入了一种新的for循环,这种循环是在一定的范围内直接进行循环

语法格式

for (element_type variable : container)
{

}

element_type是要便利的容器内元素的类型
variable 是变量名称,类似于给容器内单个元素进行命名
container是要遍历的容器的名称

给出一个例子:

#include<iostream>

using namespace std;

int main()
{
	int arr[] = { 1,2,3,4,5 };

	for (int num : arr)
	{
		cout << num << "  ";
	}
	cout << endl << "-------------" << endl;

	for (int xx : arr)
	{
		cout << xx << "  ";
	}

	return 0;
}

运行结果:
在这里插入图片描述

nullptr

在C++11中nullptr作为关键字引入,表示空指针,

在需要用到空指针的地方,建议用nullptr而不是null

在此不多做解释

结语

关于auto关键字、范围内的for循环的学习和介绍到这里就结束了,希望对大家有帮助,我们下次见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中断子系统 -- 中断通用框架

目录 通用数据结构 中断注册 中断线程化 中断处理 获取hwirq号 irq_enter preempt_count generic_handle_irq irq_exit 通用数据结构 内核提供了两种中断描述符组织形式&#xff1a; 打开CONFIG_SPARSE_IRQ宏&#xff08;中断编号不连续&#xff09;&#xff0c;中断描…

android h5 共享停车系统myeclipse开发mysql数据库编程服务端java计算机程序设计

一、源码特点 java android h5 共享停车系统APP是一套完善的WEBandroid设计系统&#xff0c;对理解JSP java&#xff0c;安卓app编程开发语言有帮助&#xff08;系统采用web服务端APP端 综合模式进行设计开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&#xf…

MySQL架构介绍与说明

1、MySQL架构介绍 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上&#xff0c; 插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的…

机器学习 day33(误差分析、添加数据)

误差分析 我们可以手动查看分类错误的子集样本&#xff08;通常为100个&#xff09;&#xff0c;并统计他们的错误类型在所有错误类型中&#xff0c;选择一种或几种最常见的错误&#xff0c;进行改进。这可以最高效的改进你的模型误差分析的一个限制是&#xff1a;它只能很好…

基于Python+tkinter实现一个简易计算器桌面软件

你是否想过自己能够开发一个桌面小工具&#xff1f;如果答案是“是”&#xff0c;那么你来对地方了&#xff01;今天&#xff0c;我们要一起使用Python中的tkinter库&#xff0c;来创建一个简易的桌面计算器。 1. 为什么选择tkinter&#xff1f; tkinter是Python的标准GUI库。…

Tokenview X-ray功能:深入探索EVM系列浏览器的全新视角

Tokenview作为一家领先的多链区块浏览器&#xff0c;为了进一步优化区块链用户的使用体验&#xff0c;我们推出了X-ray&#xff08;余额透视&#xff09;功能。该功能将帮助您深入了解EVM系列浏览器上每个地址的交易过程&#xff0c;以一种直观、简洁的方式呈现地址的进出账情况…

基于注解和jwt实现权限管理

第一步&#xff1a;创建项目 添加Maven依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version> </dependency> <dependency><groupId>org.s…

2023 Google 开发者大会|Mobile开发专题追踪

文章目录 前言大会介绍涉及内容MobileWebAICloud Mobile开发专题多终端应用的开发适配大屏视频流可穿戴设备电视新的设计中心 构建高质量的应用高级相机和媒体功能用户的安全和隐私更精细的视觉体验 小结 前言 哈喽大家好&#xff0c;我是阿Q。近期&#xff0c;【2023 Google …

TVS二极管的小知识

TVS二极管的小知识 文章目录 TVS二极管的小知识1、工作原理2、TVS二极管参数详解3、选型指南4、TVS二极管选型注意事项 1、工作原理 TVS&#xff08;Transient Voltage Suppressors&#xff09;二极管&#xff0c;即瞬态电压抑制器&#xff0c;又称雪崩击穿二极管&#xff0c;…

LabelEdit DLSample

LabelEdit改成true SelectedNode.Text"" 关于图像和数据集的信息在字典DLDataset中表示&#xff0c;DLDataset充当一个数据库。更准确地说&#xff0c;它存储关于数据集和在关键样本下收集的单个样本的字典的一般信息。当需要实际的图像数据时&#xff0c;将为每个…

ClickHouse进阶(十六):clickhouse优化-表优化

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术,IT贫道_大数据OLAP体系技术栈,Apache Doris,Kerberos安全认证-CSDN博客 &#x1f4cc;订阅…

AD20多层板设计中的平电层设计规则

一般情况下的多层板设计非常复杂&#xff0c;尤其层叠的次序以及平电层的电源层设计&#xff0c;Gnd层的设计比较简单&#xff0c;不需要过多的关注&#xff0c;但是电源层的设计非常关键&#xff0c;常常让人感到无法下手的感觉&#xff0c;这里介绍一个简单的防盲很快的让你上…

云流化:XR扩展现实应用发展的一个新方向!

扩展现实的发展已经改变了我们工作、生活和娱乐的方式&#xff0c;而且这才刚刚开始。扩展现实 (Extended reality, XR) 涵盖了沉浸式技术&#xff0c;包括虚拟现实、增强现实和混合现实。从游戏到虚拟制作再到产品设计&#xff0c;XR 使人们能够以前所未有的方式在计算机生成的…

解决方案 | 法大大电子签加速高校七大场景全面实现数字化

随着互联网技术的普及和发展&#xff0c;数字化校园建设在各高校正如火如荼地开展。无纸化办公是数字化校园建设中非常重要的一项内容&#xff0c;如何更好地在高校实现无纸化办公&#xff0c;为学校的教学、科研及管理服务提高工作效率、规范工作流程&#xff0c;是各高校都应…

window server事件ID说明

重启&#xff1a;1074 6013&#xff1a;系统运行时间 6008&#xff1a;非正常关机或者意外关机 WindowsServer2012R2事件id6008什么意思&#xff1f; 在Windows Server 2012 R2中&#xff0c;事件ID 6008是一个系统事件&#xff0c;它通常表示系统的非正常关机或意外关机。当系…

阿里镜像站下载Centos7

CentOS主流版本有7和8&#xff0c;我们这里选择centos7进行安装&#xff0c;因为现在8已经不更新了&#xff0c;CentOS 8 是一个介于实验性版本和稳定商业版本之间的产物&#xff0c;是最后一个版本&#xff0c;一般情况下&#xff0c;我们更追求稳定性&#xff0c;以我们选择 …

幸福里基于 Flink Paimon 的流式数仓实践

摘要&#xff1a;本文整理自字节跳动基础架构工程师李国君&#xff0c;在 Streaming Lakehouse Meetup 的分享。幸福里业务是一种典型的交易、事务类型的业务场景&#xff0c;这种业务场景在实时数仓建模中遇到了诸多挑战。本次分享主要介绍幸福里业务基于 Flink & Paimon …

常用数据库的 API - 开篇

API API 这个词在大多数人看来可能和 CNS 差不多&#xff0c;前者天天听说就是用不上&#xff0c;后者天天读就是发不了。 不过&#xff0c;通过今天的一个简短介绍&#xff0c;今后 API 这个东西你就用上了&#xff0c;因为在文章最后我将会展示一个最最基础且高频的 API 使…

小白如何选择阿里云服务器配置?CPU内存带宽系统盘选择

阿里云服务器配置选择_CPU内存/带宽/存储配置_小白指南&#xff0c;阿里云服务器配置选择方法包括云服务器类型、CPU内存、操作系统、公网带宽、系统盘存储、网络带宽选择、安全配置、监控等&#xff0c;阿小云分享阿里云服务器配置选择方法&#xff0c;选择适合自己的云服务器…

4.3 IAT Hook 挂钩技术

IAT&#xff08;Import Address Table&#xff09;Hook是一种针对Windows操作系统的API Hooking 技术&#xff0c;用于修改应用程序对动态链接库&#xff08;DLL&#xff09;中导入函数的调用。IAT是一个数据结构&#xff0c;其中包含了应用程序在运行时使用的导入函数的地址。…