【C++】C++入门 auto关键字详解(C++11)

您所在的位置:网站首页 auto和pal的区别哪个清晰 【C++】C++入门 auto关键字详解(C++11)

【C++】C++入门 auto关键字详解(C++11)

2023-12-26 12:48| 来源: 网络整理| 查看: 265

前言

C语言中包括了关键字auto,它可用于定义局部变量。但自从所有的非全局变量的缺省值假定为auto以来,auto就几乎很少使用了。 在C或者以前C++中,auto关键字基本上可以被无视. 但是在C++11中auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

auto关键字 一、C语言中的auto1、C语言中,auto用于声明一个变量为自动变量2、C语言中,只使用auto修饰变量,变量的类型默认为整型 二、C++中的auto1、auto的基本介绍2、auto的使用细则1.使用auto定义变量时必须对其进行初始化2.auto与指针和引用结合起来使用3. 在同一行定义多个变量 3、auto不能推导的场景1.auto不能作为函数的参数2.auto不能直接用来声明数组

一、C语言中的auto

在C语言的学习中我们几乎用不到auto关键字,它的存在感实在是太低了!!! 即便如此,我们还是为了C++中的auto的学习先复习一下C语言中的auto关键字吧。

1、C语言中,auto用于声明一个变量为自动变量

自动变量也称局部变量。auto关键字主要用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字经常被省略,因为所有的局部变量默认就是auto的。

用auto声明全局变量时,编译出错: #include auto int i=0; //编译出错 int main() { return 0; } auto声明局部变量时,编译正常: #include int main() { auto int i=0; return 0; } 2、C语言中,只使用auto修饰变量,变量的类型默认为整型 void main(void) { float a = 3.2f, b = 2.1f; auto c = a + b;//c语言中,c = 5 } 二、C++中的auto 1、auto的基本介绍

在C++11中,auto是用来自动推导表达式或变量的实际类型的。 例如:

#include using namespace std; int main() { int a = 0; auto b = a;//此时b为int 类型 cout { "apple", "苹果" }, { "orange", "橙子" },{"pear","梨"} }; std::map::iterator it = m.begin(); //auto it = m.begin();//与上一行代码作用相同,只是auto更加方便 return 0; }

可能你会觉得C语言中的typedef关键字也能做到同样的简化代码的效果,但是使用typedef有时会遇到新的难题。 例如:

typedef char* pstring; int main() { const pstring p1; // 编译成功还是失败? const pstring* p2; // 编译成功还是失败? return 0; }

答案是第一个编译失败,第二个编译成功。

第一个实际类型是: char*const p1;

const修饰的是p1,p1是一个常变量,常变量的创建必须初始化,而且只能初始化一次,而上面的代码并没有进行初始化,因此报错。

第二个的实际类型是: char*const* p2;

const修饰的是*p2,没有问题。

通过上面的对比相信你也能体会到auto的作用了吧,在编程时,常常需要把表达式的值赋值给变量,这就要求在声明变量的时候清楚地知道表达式的类型。然而有时候要做到这点并非那么容易,auto的出现就解决了这个问题。

2、auto的使用细则 1.使用auto定义变量时必须对其进行初始化 #include using namespace std; int TestAuto() { return 10; } int main() { int a = 10; auto b = a;//变量 auto c = 'a';//字符 auto d = TestAuto();//函数返回值 cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3