C++(4)——auto关键字、范围for和指针空值nullptr

目录

auto的介绍

auto的使用规则

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

auto定义多个变量

auto不能使用的场景

auto不能作为函数的参数

auto不能直接用来声明数组

范围for

范围for的语法

范围for的使用条件

指针空值nullptr

auto的介绍

当我们学习的越来越深入时,我们会发现有时候一个变量的类型我们可能不太容易知道,这时候该怎么办呢?

于是就引入了auto这个关键字。auto是一个类型指示符来指示编译器,就是告诉编译器变量的类型。其实,C语言和C++早期中也有auto这个关键字,但是用法和定义不一样。

auto的使用规则

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

auto声明指针类型的变量时,auto 和 auto* 没有任何区别,但是auto声明引用类型时需要加&

看一下运行结果

根据运行结果,auto和auto*的类型在这里都是int*的类型。

auto定义多个变量

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

第一行没有报错,但是第二行因为c的类型是int ,而d的类型是double,所以报错了。

auto不能使用的场景

auto不能作为函数的参数

auto不能直接用来声明数组

范围for

C语言中,我们都学过for循环,也听过 万物皆可for循环 这句话。那C嘎嘎中范围for又是啥呢?

范围for的语法

我们以前要遍历一个数组,要这样遍历:

对于一个有范围的集合来说,我们在说明它的范围,是不是有些多余了,有时候还会写错代码。于是C++11中引入了基于范围的for循环。for循环后的括号由“ :”分为两部分。第一部分是范围内用于迭代的变量,第二分部表示被迭代的范围。

我们看看结果;

范围for的使用条件

for循环的迭代的范围必须是确定的

迭代的对象要实现++和==的操作(后面会细讲)

指针空值nullptr

学过编程的都知道,我们在创建一个变量时最好给改变量一个合适的初始值,否则可能会出现不可预料的错误。假如我们创建一个指针,如果指针没有合适的指向,我们都会用NULL给指针初始化。

被初始化的指针p。

NULL其实是个宏

我们查看传统C头文件 stddef 中,NULL被定义为 常量 0。

但是,还是会遇到一些麻烦的

这段代码是什么意思呢?程序本来的意思是通过 NULL 调用 f(int*)函数。但是由于NULL被定义为0,所以最后调用的是f(int)函数。

C++98中,常量0可以是一个整型数字,也可以是无类型指针 void* 常量,但是编译器通常默认为是整型常量,如果要使用,必须强制类型转换为 void* 0。

所以,C++11中引入了nullptr这个关键字。

注意:

1 如果nullptr表示空指针时,不需要包含头文件。

2 C++11中,sizeof(nullptr)与sizeof((void*)0)所占的字节相同。

3 为了提高代码的健壮性,后面表示空指针最好用nullptr。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值