当前位置 : 主页 > 编程语言 > c语言 >

C++ auto用法

来源:互联网 收集:自由互联 发布时间:2023-08-28
@[TOC] 1.auto作用 auto关键字能够自动识别变量类型。 2. auto的原理 auto定义的变量会在编译阶段根据右值来推出auto变量的类型。 1.使用auto定义变量时必须对其进行初始化,在编译阶段编译

@[TOC]

1.auto作用

auto关键字能够自动识别变量类型。

2. auto的原理

auto定义的变量会在编译阶段根据右值来推出auto变量的类型。

1.使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。

2.因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。

3.使用auto的细则

3.1. auto与指针和引用结合起来使用

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

	return 0;
}

b是auto类型,会根据a的类型推导b的类型。 pa是指针,因为auto修饰的pa会根据右值(&a)来推导出pa的类型。 auto pa = &a和 auto *pa = &a是一样的写法。只不过是: auto *pa = &a规定pa必须是指针类型,不能是其他类型了。

auto *pa = 10;

这样的代码是错误的,auto* 规定了变量必须是指针类型。给一个10,10是一个字面量,默认是int类型。不符合规则。

3.2 在同一行定义多个变量

一行可以定义多个相同变量。

auto a = 1, b = 3;

注意:一行的变量必须相同。

auto c = 2, d = 3.14;

这样的代码就是错误的。

因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

3.3. auto不能作为函数的参数

因为编译器不能对形参的实际类型进行推导。

3.4auto不能作为数组的声明。

void TestAuto()
{
  int a[] = {1,2,3};
  auto b[] = {4,5,6};//错误
}

编译器不知道要开多大的空间。

上一篇:驱动开发:内核中进程与句柄互转
下一篇:没有了
网友评论