C++11自动类型推导:auto

# 自动类型推导:auto
在C++11中可以使用auto来根据变量的初始值类型自动为变量选择匹配的数据类型。
##举例


int a;
auto x=a;//x为int类型

##auto使用限制
一、auto变量必须在定义时初始化,类似于const关键字

auto a1=10 //正确
auto b1;//错误
b1=10;

二、一行同一类

auto a4=10,a5 = 20; //正确
auto b4 = 20,b5=20.0; //错误,没有推导为同一类型

三、如果auto后没有&符号则推导类型去除引用,指针,const等

int a = 10;
int& b=a;
auto x=b;//x为int类型而不是int&类型(去除引用)
const int a1 = 10;
auto bi=a1;//b1的类型为int而非const int(去除const)

四、如果auto后有&符号则推导类型保留引用,指针,const

int a=10;int& b=a;
auto& d=b;//d为int&类型
const int a2=10;
auto& b2=a2;//b2为const int类型

五、初始化表达式为数组时,auto关键字推导类型为指针

int arr[10] = {0};
auto auto_arr = arr;               //编译正确
auto auto_arr3[10] = arr;          //编译错误

原因:auto推导类型为指针,因为数组名本身是一个指针类型的变量

六、auto不能直接声明一个数组变量

auto a[3] = {1,2,3}       //编译错误

注:auto右值如果是初始化列表形式,那么auto推断的类型为自动数组根据列表中的数组元素个数确定大小
六、若表达式为数组且auto带上&,则推到类型为数组类型
关于数组名退化为指针变量:当数组作为参数传递给函数的时候数组名退化为指针
七、C++14中国auto可以作为函数的返回值和参数类型
##拓展:数组名作为函数的参数:
1.如果形参为数组类型则实参必须是数组名;如果实参是数组名,形参可以是同样维数的数组或者是指针
2.实参数组和形参数组必须类型相同,形参数组可以不指明长度
3.数组名除了作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址,因此当数组名作为函数参数时,实参和形参之间不是“值传递”,而是"地址传递",实参数组名将该数组的起始地址传递给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配存储单元。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值