初始C++(五):

news2024/11/25 8:23:25

文章目录

    • 一.auto关键字
      • 1.1auto关键字用法
      • 1.2auto关键字的小细节
    • 1.3h获取变量类型
    • 二.范围for(语法糖)
    • 三.nullptr和NULL

一.auto关键字

1.1auto关键字用法

auto这个关键字其实非常简单,用处就是能自动帮你去匹配类型,像下面这段代码:

int main()
{
	int a = 10;
	double x = 1.1;

	int b = a;
	auto c = a;//自动匹配c的类型是什么

	auto y = x;

	return 0;
}

但是这有什么用呢?可能现在刚开始学C++,觉得没什么大用,但是随时知识学的越来越多,后面变量的类型,也会变得很多很长,这时候在用auto,可能就会让代码变的更简洁。

1.2auto关键字的小细节

  1. auto定义变量时必须对其进行初始化。
  2. 用auto声明指针类型时,用auto和auto没有任何区别(但如果使用auto,后面的变量类型必须是指针类型的,否则会出错)
  3. auto声明引用类型时则必须加&
  4. 当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错(因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量)
  5. auto不能推到的场景
  • auto不能作为函数的参数
void TestAuto(auto a)
{
	;
}
  • auto不能直接用来声明数组
void TestAuto()
{
	int a[] = {1,2,3};
	auto b[] = {456};
}

1.3h获取变量类型

int a = 10;
cout << typeid(a).name() << endl;

可以获取a这个变量的类型。

二.范围for(语法糖)

以前在遍历数组的时候可能会这样写:

int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		cout << arr[i] << ' ';
	}
	cout << endl;
	return 0;
}

这样写看上去会比较繁琐,所以C++给了我们一个新的东西叫范围for,它是这样用的:

int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	for (auto i : arr)
	{
		cout <<i << ' ';
	}
	cout << endl;
	return 0;
}

for里面的意思是:自动匹配arr数组里每一位的内容,并赋值给i,然后自动检测数组是否结束。这样一看把原来的代码减轻了不少。

这里的auto可以换成int,但这样写的话,如果数组类型变为double或者其它的,for循环里面的类型也要跟着改。

因为这里是把数组里的元素赋值给变量i,如果想修改数组里的内容需要这样写:

int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	for (auto& i : arr)
	{
		i *= 2;
		cout << i << ' ';
	}
	cout << endl;
	return 0;
}

将变量i变成arr每个元素的一个引用,这样的话修改i就相当于修改数组里的内容了。

三.nullptr和NULL

nullptr是C++自己打的一个补丁,因为在C++里面NULL被宏定义成了0:
在这里插入图片描述

因为NULL一般是用来初始化指针的,也就是相当于指针里面的0,但是在C++里面,NULL变成了实实在在的0。所以C++为此添加了nullptr这个关键字,nullptr的用法和C语言中NULL的用法一样都是0被强转成void*类型:

((void*)0)

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

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

相关文章

Jetpack技术Hilt【实现解耦 】

Hilt是什么&#xff1f; Hilt 是基于 Dagger2 的针对 Android场景定制化 的框架。 这有点像什么&#xff1f; RxAndroid 是 RxJava 的Android平台定制化扩展。Andorid虽然由Java、Kotlin构成&#xff0c;但是它有很多平台的特性&#xff0c;比如它有 Java开发 所不知道的 Cont…

嵌入式开发:AI和Chat GPT改变嵌入式系统的3种方式

嵌入式软件开发是一个已经发展了很多年的领域&#xff0c;它已经见证了许多技术进步。然而&#xff0c;ChatGPT和其他人工智能技术的引入将以前所未有的方式彻底改变该领域。在这篇博文中&#xff0c;我们将探索ChatGPT和AI将改变嵌入式开发的三种方式。方式1 —— CHATGPT/AI自…

Redis之搭建一主多从

搭建redis一主多从的过程 1.在相应位置创建一个文件夹存放redis配置文件 mkdir myredis2.复制redis配置文件到此文件夹中 cp /opt/redis/redis/bin/redis.conf /opt/myredis/redis.conf3.新建三个配置文件 touch redis6379.conf touch redis6380.conf touch redis6381.conf4…

测试开发之Django实战示例 第九章 扩展商店功能

第九章 扩展商店功能在上一章里&#xff0c;为电商站点集成了支付功能&#xff0c;然后可以生成PDF发票发送给用户。在本章&#xff0c;我们将为商店添加优惠码功能。此外&#xff0c;还会学习国际化和本地化的设置和建立一个推荐商品的系统。本章涵盖如下要点&#xff1a;建立…

基于JAVA+SpringBoot+Vue+ElementUI中学化学实验室耗材管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 当前&#xff0c;中学…

【js文字大小自适应】原生js实现文字大小自适应(附完整源码)

目录1、先睹为快2、代码实现第一步、搭建页面第二步、设置样式第三步、JS实现字体自适应3、源码直通车&#xff08;百度云下载&#xff09;【写在前面】之前写过一个大屏的项目&#xff0c;其中里面最头疼的应该是图片&#xff0c;文字&#xff0c;图表&#xff08;echarts&…

分布式事务解决方案——TCC

TCC是Try、Confirm、Cancel三个词语的缩写&#xff0c;TCC要求每个分支事务实现三个操作&#xff1a;预处理Try、确认Confirm、撤销Cancel。1、Try 阶段是做业务检查(一致性)及资源预留(隔离)&#xff0c;此阶段仅是一个初步操作&#xff0c;它和后续的Confirm一起才能真正构成…

Win11系统如何安装Ubuntu20.04(WSL版本)并安装docker

终于还是下定决心去换电脑了……这次采用轻量级的WSL&#xff0c;发现虽然没有占内存的GUI界面&#xff0c;但是编码和阅读文档还是非常nice的 1、首先开启Win11的虚拟机服务 2、下载你期望的Ubuntu服务器&#xff08;这里以20.04为例&#xff09; 安装成功后&#xff0c;发现…

发布的软文如何提高阅读量?

软文文章是一种带有宣传性质的文章&#xff0c;旨在宣传某个产品、品牌或者公司。然而&#xff0c;要想有效地宣传&#xff0c;就必须要让读者真正的阅读并了解软文中的内容。因此&#xff0c;提高软文文章阅读量是非常重要的。下面是一些有助于提高软文文章阅读量的方法&#…

简单记录简单记录

目录1.注册Gmail2.注册ChatGPT3.验证“真人”使用4.开始使用1.注册Gmail 第一步先注册一个谷歌邮箱&#xff0c;你也可以使用微软账号&#xff0c;大部分人选择使用gmail。 申请谷歌邮箱 选择个人用途创建账号即可。 &#x1f4cc;温馨提示&#xff1a; 你直接使用guo内的网…

react路由详解

在学习react路由之前&#xff0c;我们肯定需要安装路由。大家先运行如下命令安装路由。安装之后随我一起探索react路由。 安装 版本v6 npm i react-router-dom -S 页面准备 创建两个文件夹 pages和 router pages文件夹里面放的是页面 router文件夹里面是进行路由配置 路由…

【MySQL】聚合函数和GROUP BY

文章目录1、聚合函数2、GROUP BY3、HAVING4、SELECT的执行过程1、聚合函数 聚合函数作用于一组数据&#xff0c;并对一组数据返回一个值。聚合函数类型&#xff1a;AVG()、SUM()、MAX()、MIN()、COUNT()。不能在 WHERE 子句中使用聚合函数。 SELECT AVG(salary), MAX(salary)…

从0到1一步一步玩转openEuler--14 openEuler DNF(YUM)配置管理

文章目录14.1 DNF配置文件14.1.1 配置main部分14.1.2 配置repository部分14.1.3 显示当前配置14.2 创建本地软件源仓库14.3 添加、启用和禁用软件源14.3.1 添加软件源14.3.2 禁用软件源14.3.3 启用软件源DNF是一款Linux软件包管理工具&#xff0c;用于管理RPM软件包。DNF可以查…

论文笔记: Monocular Depth Estimation: a Review of the 2022 State of the Art

中文标题&#xff1a;单目深度估计&#xff1a;回顾2022年最先进技术 本文对比了物种最近的基于深度学习的单目深度估计方法&#xff1a; GPLDepth(2022)[15]: Global-Local Path Networks for Monocular Depth Estimation with Vertical CutDepthAdabins(2021)[1]: Adabins:…

操作系统:文件系统的实现

一、文件系统结构 磁盘的逻辑单元为块&#xff0c;内存和磁盘之间的I/O传输以块为单位执行。 磁盘的特点 1可以原地重写&#xff0c;可以从磁盘上读一块儿&#xff0c;修改该块&#xff0c;并将它写回到原来的位置可以直接访问磁盘上的任意一块。因此&#xff0c;可以方便地…

浅析SCSI协议(2)命令模型

SCSI命令模型 SCSI协议对链路传输没有进行严格的限制&#xff0c;但约束了SCSI的命令模型。协议允许使用SAS、FC以及以太网等不同的链路实现&#xff0c;但对所有的SCSI传输层实现而言&#xff0c;都必须遵循统一的SCSI命令模型。SCSI命令模型约束了SCSI命令执行过程、命令请求…

《底层逻辑:看清这个世界的底牌》读后感

书名《底层逻辑&#xff1a;看清这个世界的底牌》作者刘润简介如果只教给你各行各业的“干货”&#xff08;方法论&#xff09;&#xff0c;那只是“授人以鱼”&#xff0c;一旦环境出现任何变化&#xff0c;“干货”就不再适用。但如果教给你的是底层逻辑&#xff0c;那就是“…

初入测试如何编写测试用例?从3个方面带你写一个合格的测试用例

前言 作为一个测试新人&#xff0c;刚开始接触测试&#xff0c;对于怎么写测试用例很头疼&#xff0c;无法接触需求&#xff0c;只能根据站在用户的角度去做测试&#xff0c;但是这样情况会导致不能全方位的测试APP&#xff0c;这种情况就需要一份测试用例了&#xff0c;但是不…

亿级高并发电商项目-- 实战篇 --万达商城项目 七(品牌模块、商品类型模块等开发)

专栏&#xff1a;高并发---分布式 在管理商品时&#xff0c;除了商品名、价格、商品介绍等基本参数外。还需 要给商品添加品牌、商品类型、商品规格等参数。比如Iphone13的 品牌是苹果。商品类型属于手机通讯>手机>手机。规格有机身颜色: 星光色、版本:128G。品牌、商品…

暗网与深网:5 个主要区别

在互联网上&#xff0c;深网不会被网络爬虫索引&#xff0c;而暗网是故意隐藏的。 文章目录前言一、暗网与深网二、什么是暗网&#xff1f;什么是深网&#xff1f;暗网和深网之间的 5 个主要区别1. 范围和操作暗网深网2. 尺寸暗网&#xff1a;深网&#xff1a;3. 访问暗网深网4…