cpp基础(3)

auto关键字

auto自C++11以后,被赋予了全新的含义,这里引用一下官方介绍:auto不再是一个储存类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。
看不懂?没关系,我来翻译成人话,上一段代码先:

int main() {
	int a = 66;
	auto b = a;
	auto c = 'a';
	//auto e; 无法编译成功,auto定义变量时必须初始化
	return 0}

看到这里,相信有一部分人已经反应过来了,auto其实是一个懒人包,对于懒得去查看或者输入变量类型的人来讲,直接打上auto会如虎添翼,因为电脑会自动识别并替换为变量的实际类型,下面的例子也很好的说明了使用auto定义必须初始化。

当然了,auto还有更高级的使用方法,举个栗子先:

int main() {
	int x = 10;
	auto a = &x;
	auto* b = &x;
	auto& c = x;

	auto m = 1, z = 9;
	//auto d = 8, x = 4.01; 无法通过,因为d和x不是同一类型
	return 0;
}

首先当auto和指针和引用结合起来,显而易见,aotu和aotu没有任何区别,但是aotu如果表示定义的变量是一个引用类型的话,那必须是auto&*;其次,auto可以一行定义多个变量,但是要保证变量的类型是相同的,否则会报错。

讲到这里了,那么auto的用处只有这么少?看着还是很鸡肋?当然不是!下面介绍一个很经典的用法:语法糖,先举个栗子:

int main() {
	int a[] = { 2,4,8,56,9,6,3,4 };
	for (auto e : a) {
		cout << e << endl;
	}
	return 0;
}

输出结果便是该数组的全部成员,方法简单实惠,像吃了糖一样爽,好用,爱用。
但是其实,该方法的学术用语叫做范围for语法,冒号将其分为前后两部分,第一部分为范围内用于迭代的变量,另一部分则是表示迭代的范围。(tips:迭代的范围必须是确定的,不可以说一个函数的参数是一个指针,然后在参数里使用语法糖,因为该函数的数组是不确定的。)

指针空值nullptr

在传统的c语言中,我们知道NULL是一个空指针,但是在c++98中,它被是为是常量0,而不是无类型指针 (void*),因此则会闹出很多问题,比如函数参数是指针,但是在c++程序里,填NULL则会产生参数错误。
因此,c++11后,nullptr产生了,作为一个新关键字,因此不需要包含任何头文件,它代表了过去c语言中的NULL,即指针空值,sizeof(nullptr)和sizeof((void* )0)所占的字节数是相同的,因此,建议以后表示空指针,直接使用nullptr

总结

今天先谈到这里,由于类和对象过于复杂,我决定单开一个章节来说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值