首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C++拓展2——auto关键字(C++11)、范围for(C++11)以及nullptr与NULL的区别

C++拓展2——auto关键字(C++11)、范围for(C++11)以及nullptr与NULL的区别

作者头像
再睡一下就好
发布2025-06-10 17:07:33
发布2025-06-10 17:07:33
2510
举报

提示:以下是本篇文章正文内容,下面案例可供参考

一、auto关键字(C++11)

1.auto简介:

在C++11中,auto是作为一个新的类型指示符来指示编译器,auto创建或声明的变量必须由编译器在编译时期根据之后的内容推导而得到实际类型(类似一个”占位符“)。故而使用auto定义变量时必须初始化。

如:auto a = 10; //int型

auto m ='M'; //char型

auto ptr=&a; //int*型

2.使用细则

(1)auto在一行定义多个变量时须是同一类型。

如:auto a = 1,b=3;

错误示范:auto x =5 , y =7.1;

(2)auto与指针、引用结合使用

用auto声明指针类型时,用auto和auto*没有任何区别,

但用auto声明引用类型时则必须加&。

如:

int a = 10;;

auto x=&a; == auto * x=&a;

auto &A =a;

二、范围for(C++11)

1.介绍:

在C++11中,引入了特定范围的for循环。for循环后的括号内由两部分组成:

①用于迭代的变量:

②迭代范围。

如: int test[5]={1,2,3,4,5};

for(auto x ; test)

cout<<x<<' ';

2.使用条件

for循环迭代的范围必须是确定的,如数组中首元素和最后一个元素的范围,类中begin和end。

注意:与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环。

三、nullptr与NULL的区别

1.介绍nullptr与NULL

NULL:NULL是一个宏值为 0 或void* 0,常用于初始化没有合适指向的指针,如int * x = NULL;

nullptr:nullptr是一个关键字,类型是 nullptr_t。它的作用是可以转换为任何指针类型

2.使用NULL时可能会遇到的麻烦

先看如下代码:

void test(int) {cout<<"int"<<endl;}

void test(int * ) //函数重载 {cout<<"int * "<<endl;}

int main() { test(NULL); //这是打印”int“ 还是”int * “呢? return 0; }

在vs中输出结果是int

正如前文,NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量。不论采取何 种定义,在使用空值的指针时,都可能会遇到一些麻烦。

由于在使用NULL时可能会出现意料之外的错误,故而大多数书籍推荐,在表示指针空nullptr。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、auto关键字(C++11)
    • 1.auto简介:
    • 2.使用细则
    • (1)auto在一行定义多个变量时须是同一类型。
    • (2)auto与指针、引用结合使用
  • 二、范围for(C++11)
    • 1.介绍:
    • 2.使用条件
  • 三、nullptr与NULL的区别
    • 1.介绍nullptr与NULL
    • 2.使用NULL时可能会遇到的麻烦
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档