37. C++ 基于范围的for循环、指针空值——nullptr(c++11新特性)

news2024/11/26 10:26:05

       

目录

1.基于范围的for循环语法如下: 

2.一些编程中的实例 

3.指针空值——nullptr  

c++11标准下的NULL和nullptr 


      今天进行了新的学习,基于范围的for循环。基于范围的 for 循环(Range-based for loop)是 C++11 引入的一种循环结构,用于遍历容器、数组或其他支持迭代的数据结构中的元素。

1.基于范围的for循环语法如下: 

for(ElemType val: array)
{
  ...// statement 循环体
}

 ElemType:是范围变量的数据类型。它必须与数组(容器)元素的数据类型保持一致,或者                    是数组元素可以自动转换过来的类型。

            val:是范围变量的名称。该变量将在循环迭代期间依次接收数组中的元素值。在第一次循环迭代期间,它接收的是第一个元素的值;在第二次循环迭代期间,它接收的是第二个元素的值;以此类推。

        array: 是要让该循环进行的数组(容器)的名称。该循环将对数组中的每个元素迭代一次。

2.一些编程中的实例 

int main() {
    int a[10] = { 0 };
    for (int i = 0; i < 10; i++) {
        cin >> a[i];
    }
    for (int val1 : a) {
        cout << val1 << ' ';
    }
    cout << endl;
    for (auto val2 : a) {
        cout << val2 << ' ';
    }
    return 0;
}

 

以上代码,使用了基于范围的for循环,第二个for循环就是正常的基于范围的for循环。第三个for循环引入了auto,for (auto val : a) :使用范围for循环遍历数组a的每个元素,将当前元素的值赋给val。

3.指针空值——nullptr  

在早期的 C++ 标准中,NULL 被定义为整数常量 0,NULL 是一个宏定义。而在现在的c11下对于指针的初始化一定要用指针空值常量 nullptr。

c++11标准下的NULL和nullptr 

在C++11标准中,NULL和nullptr是不同的。NULL是一个宏定义,它被定义为整数0,而nullptr是一个关键字,它是一个空指针常量,用于表示一个空指针,它的类型是std::nullptr_t。

使用NULL可能会导致一些问题,因为它实际上是一个整数,而不是一个指针。在某些情况下,编译器可能无法正确地将NULL转换为指针类型,从而导致程序出现错误。

#include <iostream>
#include <cmath>
using namespace std;

void func(char* a) {
	cout << "func(char*)" << endl;
}
void func(int a) {
	cout << "func(int a)" << endl;
}
int main() {
	func(NULL);
	func(nullptr);
	return 0;
}

通过此段代码我们可以清楚的发现NULL实际是整数0,nullptr是一个空指针。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598643.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习 监督学习 Week3

Logistic Regression 一个用于分类的算法&#xff0c;模型拟合后&#xff0c;以某些值作为阈值&#xff0c;将数据区分为不同的类别。过去的回归算法中&#xff0c;y的值可以范围很广&#xff0c;而在分类算法中y代表类别&#xff0c;往往只有几个&#xff0c;甚至只有两个(tru…

物联网HMI的关键驱动力—SCADA级功能库和控件库

一、前言 在这个数字化时代&#xff0c;物联网HMI已成为连接人与设备之间的关键纽带&#xff0c;为用户提供直观、智能的交互体验&#xff0c;背后强大的关键驱动力扮演着至关重要的角色&#xff0c;其中SCADA级功能库和控件库的引入成为了物联网HMI设计和开发的核心要素。 S…

论文参考文献怎么引用|Word引用多篇参考文献|word参考文献连续引用|参考文献连续编号|交叉引用

一、参考文献准备 首先将参考文献在段落设置模型中进行编号&#xff0c;通过“交叉引用”对“参考文献”编号引用&#xff0c;以“[x-y]”引用格式实现连续多个文献引用。以实现以[1-3]交叉引用格式来引用[1][2][3] 三个连续参考文献为例说明本方法。 二、参考文献连续编号[…

Redis数据类型之列表List

Redis数据类型之列表List list中的命令如下&#xff1a; lpush&#xff1a;从左边插入&#xff0c;插入的数据是倒叙 LPUSH key value1 [value2] 将一个或多个值插入到列表头部 lpush k1 a b c d e f ; 输出结果 f e d c b a lpop k1; 输出 f 从左边pop弹出时先弹出的是f&…

ESD监控系统、防静电闸机的应用案例

ESD监控系统和防静电闸机是在电子厂、医药厂、半导体厂、航空航天等领域广泛应用的静电措施&#xff0c;可以有效地保护生产线上的产品安全&#xff0c;提高产品质量和可靠性。 近日一家电子元器件公司在其生产线上安装了防静电监控系统、ESD防静电闸机&#xff0c;用于控制人员…

Vue之基本使用

一、前端的发展史 1.HTML(5)、CSS(3)、JavaScript(ES5、ES6)&#xff1a;编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看 2.Ajax的出现 -> 后台发送异步请求&#xff0c;…

今天是六一儿童节~身为我们班的信息担当的我为我们班同学准备了一个小惊喜,你确定不来看看吗(turtle库实现:送给同学们一朵小红花)

目录 一.实现思路 二.花朵的实现方法 三.花朵的茎实现方法 四.画出第一片叶子的方法 五.画出第二片叶子的方法 六.如何设置页面主体 结尾 今天呢&#xff0c;也是一年一度的六一儿童节&#xff08;虽然各位大佬可能不过&#xff0c;但是我还是要过的&#xff09;&#xf…

JMeter性能测试零基础完整入门版,视频教程加源码免费看

目录 1. Jmeter简介 2. Jmeter安装 2.1 JDK安装 2.2 JMeter安装 3. 测试实例 3.2 请求参数 3.3 返回结果 4. JMeter脚本编写 4.1 添加线程组 4.2 添加HTTP请求 4.3 添加察看结果树 4.4 添加用户自定义变量 4.5 添加断言 4.6 添加断言结果 4.7 添加聚合报告 5. 执…

Spring Boot如何实现微服务架构中的API网关?

Spring Boot如何实现微服务架构中的API网关&#xff1f; 随着微服务架构的流行&#xff0c;越来越多的企业开始构建自己的微服务系统。在这种情况下&#xff0c;API网关变得尤为重要。API网关是微服务架构中的一个组件&#xff0c;它可以帮助我们管理和路由所有的API请求。Spr…

【LeetCode热题100】打卡第10天:删除链表倒数第N个节点

文章目录 删除链表倒数第N个节点⛅前言&#x1f512;题目&#x1f511;题解 删除链表倒数第N个节点 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&a…

8. 何为ECC

非对称加密 在我们认知里面&#xff0c;通常说到非对称加密&#xff0c;就会弹出2个词&#xff0c;RSA和ECC&#xff0c;做过对称加密的都非常清楚&#xff0c;RSA其实就是模指运算。用公钥来加密&#xff0c;私钥来解密&#xff1b;私钥签名&#xff0c;公钥验签。但是提到EC…

【数据结构】链表 linked list

一、什么是链表 零散的内存空间存储&#xff0c;由元素和指针组成 二、常用操作 1.原理 access&#xff1a;通过next指针遍历 时间复杂度&#xff1a;O(N) search&#xff1a;通过next指针遍历 时间复杂度&#xff1a;O(N) insert&#xff1a;找个新的内存空间存储新元素…

学习HCIP的day.10

十、对BGP一些情况的总结&#xff1a; 1、路由条目不优特殊情况&#xff1a; 在BGP协议中&#xff0c;存在一种无法优秀的路由条目&#xff1b;假设R4路由表中存在一条非BGP产生的到达5.5.5.5的路由条目&#xff0c;且该条目用于R4与R5建立BGP邻居关系&#xff1b;那么之后R5…

【Linux网络】搭建LNMP架构

搭建LNMP架构 一、编译安装MySQL服务二、安装Nginx服务三、安装配置PHP解析环境四、部署Discuz社区论坛Web应用五、部署博客论坛应用六fpm进程优化 一、编译安装MySQL服务 1.安装MySQL环境依赖包 yum -y install gcc gcc-c ncurses ncurses-devel bison cmake2、创建运行用户 u…

地震勘探基础(三)之地震波的时距曲线

时距曲线 在反射波地震勘探中&#xff0c;一般是在地面激发地面接收&#xff0c;激发点到接受点的距离称为炮间距&#xff08;offset&#xff09;&#xff0c;用 x x x表示。如果炮间距为0&#xff0c;称为自激自收。 单道接收&#xff1a;激发一次只在一个位置上接收地震波。…

在线ps网页版推荐,让你摆脱安装包的烦恼

在设计领域&#xff0c;Photoshop的地位多年来一直是不可动摇的&#xff0c;其强大的功能可以毫不夸张地说&#xff1a;只有你想不到的&#xff0c;没有PS做不到的。但强大如PS&#xff0c;也有自己的小局限性&#xff1a;处理矢量图相对较弱&#xff0c;更难掌握。今天&#x…

微信小程序——监听页面滑动(一)onPageScroll

微信小程序——手把手教你学会监听页面滑动 知识回调&#xff08;不懂就看这儿&#xff01;&#xff09;场景复现核心干货如何进行页面监听了解onPageScroll实际使用onPageScroll 知识回调&#xff08;不懂就看这儿&#xff01;&#xff09; 知识专栏专栏链接微信小程序专栏ht…

栈和队列高频面试题(必刷): 用队列实现栈 用栈实现队列 实现循环队列 括号匹配

文章目录 用队列实现栈用栈实现队列实现循环队列括号匹配 用队列实现栈 题目描述&#xff1a; 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通队列的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MySt…

新项目 使用 IDEA 搭建后端环境 及 搭建是可能遇到的 问题 及解决方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 新项目 使用 IDEA 搭建后端环境 及 搭建是可能遇到的 问题 及解决方法 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 新项目 使用 IDEA 搭建后端环…

【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[2]【Matlab代码#36】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始沙丘猫群优化算法2. 改进沙丘猫群算法2.1 非线性自适应参数2.2 Cauchy变异策略2.3 最优邻域扰动策略 3. 部分代码展示4. 仿真结果展示5. 资源获取6. 参考文献 【获取资源请见文章第5节&#xff1a;资源获取】 1.…