auto的使用 初识范围for nullptr的引入

 

目录

1、auto简介:

2、auto的使用规则

 ①auto定义变量时必须要进行初始化,否则编译器没有办法进行推演

​编辑②auto与指针和引用结合来使用

3、 auto不能推导的场景

 4、范围for !!!

它是具有使用条件的 也就是冒号后面的范围必须是已知的。

 5、不用NULL了!!!


1、auto简介:

C++11中,auto被赋予了新的含义:用来定义变量的一个占位符,告诉编译器在编译阶段,

推到初始化表达式的类型作为变量真正的类型

2、auto的使用规则

 ①auto定义变量时必须要进行初始化,否则编译器没有办法进行推演

②auto与指针和引用结合来使用

auto定义指针变量时加不加  都无所谓

    int a = 10;
	auto pa = &a;
	auto* pb = &a;

	cout << typeid(pa).name() << endl; // int *
	cout << typeid(pb).name() << endl; // int *

auto定义引用时:

 错误定义如果不加  &  符号 那么所定义出来的变量和原变量完全不是同一个变量,也就不是对原变量起别名了,是一个新的变量。可以看到rb 与 a 的地址不相同,所以修改rb不会改变a的值。

正确定义:auto声明引用类型时必须加上&。

需要加上&符号  auto& ra = a; 才是定义一个引用。

 ③当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量

 ④可以判断函数返回值

 

3、 auto不能推导的场景

①不能作为函数形参

 ②auto不能用来声明数组

 

 4、范围for !!!

传统的for循环:

int main()
{
	// 定义一个数组,数组中包含10个整形的元素
	int array[] = { 1,2,3,4,5,6,7,8,9,0 };

	// 将数组中的内容打印出来
	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
	{
		cout << array[i] << " ";
	}
	cout << endl;

	// 给数组中的每个元素乘以2
	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
	{
		array[i] *= 2;
	}

	// 输出乘以2之后的结果
	for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
	{
		cout << array[i] << " ";
	}
	cout << endl;
	return 0;
}

看这个:精简干练!!!

for循环后的括号由冒号“  :” 分为两部分,第一部分是范围内用于迭代的变量,第二部分则表示迭代的范围。

int main()
{
	int array[] = { 1,2,3,4,5,6,7,8,9,0 };
	for (auto e : array)
	{
		cout << e << " "; // 进行打印
	}
	cout << endl;
	for (auto e : array)
	{
		e *= 2;            // 每个元素乘以2 不过只是对e变量
	}
	for (auto& e : array)
	{
		e *= 2;            // 利用e作为数组元素的别名进行翻倍处理
	}
	for (auto e : array)
	{
		cout << e << " ";  // 再次进行打印
	}                      // 为{2,4,6,8,10,12,14,16,18,0}
	cout << endl;
	return 0;
}

注意:与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环。
 

它是具有使用条件的 也就是冒号后面的范围必须是已知的。

 5、不用NULL了!!!

// 在C++11之前,统一使用NULL表示空值指针
int main()
{
	// C++98
	int* p1 = NULL;

	// C++11
	int* p2 = nullptr;

	return 0;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值