初始C++(五):

一.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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值