c++基础学习Num04

news2024/11/13 15:52:52

目录

 基于for循环

一维数组

二维数组理解

c语言的null和c++的null


 基于for循环


for(ELEMTYPE val:array){
    
}

ELEMTYPE:是范围变量的类型。通常使用auto自动转换范围变量类型

val:范围变量的名称。通过迭代依次接收数组中的元素值

array:容器,注意这里的array必须是一个容器空间。

int main() {
    int ar[] = { 1,2,3,4};
    for (int& x : ar) {
        cout << x << endl;
    }
    for (int x : ar) {
        cout << x << endl;
    }
}//打印结果都是1,2,3,4

注意:一个是普通变量:通过迭代将ar[i]的值取出来赋值给x,然后输出

另外一个是引用:x是ar的别名,如果x+10那么ar数组也会随之发生改变。

一维数组

int a0,a1,a2,a3;
int*p0,*p1,*p2,*p3;
int**s;
p0=&a0;
p1=&a1;
p2=&a2;
p3=&a3;
s=&p0;
sizeof(s);
s+1;//4 int**
*s+1;//4 int*
**s+1;//4 int

s+1---->s是一个二级指针,s+1说明指针指向p1这个一级指针,偏移量是指针类型四字节

*s+1---> *s解引用变成一级指针,一级指针+1代表p0这个一级指针刚开始存储a0这个整型变量的地址,+1后就是a1这个变量的地址,偏移量是int类型,四字节

**s+1---> * *s解引用两次变成a0,+1操作即给a0自身加一

int ar0[4],ar1[4],ar2[4];
int(*p)[4]=&ar0;
p+1--->4*4=16个字节

p:&ar0 p+1--->4*4=16

*p:&ar0[0] *p+1--->4

数组首元素的地址和数组的地址都是从ar0[0]处开始 值是相等的但是意义不相同,+1偏移量不同

通过p指针修改ar1[2]的值

/* (*(p+1)+2) 就行==>p [1] [2];

p+1-->指针由ar0指向ar1 ,*(p+1)指针指向数组ar1中的元素, *(p+1)+2指针就指向ar1[2],通过解引用对值进行修改

 

二维数组理解

二维数组由多个一维数组构成

int br[3] [4]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*p)[3] [4]=&br;

int (*s)[4]=br;--->一维数组的内容了

#include<iostream>
using namespace std;
int main(){
    int ar[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    for(auto x:ar){//ar[0]
        cout<<x<<endl;
    }
}

如果按照上述方法打印二维数组将会得到三个一维数组的地址,因为基于范围的for是将ar[i]提取出来,依次迭代,由于上述二维数组是一个三行4列即由三个一维数组构成,所以打印的三个一维数组的地址

正确方法:

#include<iostream>
using namespace std;
int main(){
    int ar[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    for(auto &x:ar){//ar[0]依次迭代
        for(auto val:x){//ar[0][0]依次迭代
            cout<<x<<endl;
        }
    }
}

c语言的null和c++的null

 #ifdef __cplusplus
        #define NULL 0
    #else
        #define NULL ((void *)0)

在c++中NULL的值是0,所以无法判断空指针是指针还是整型0

所以c++使用nullptr这个关键字来代表指针空值

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

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

相关文章

ctfshow 每周大挑战 RCE极限挑战 2

目录 题目解题步骤1.跑一下正则2.变量自增3.最终解题payload 一点多余的思考 题目 解题步骤 1.跑一下正则 本着能懒就懒的原则&#xff0c;就不写Python了&#xff08;提一下这个主要是我一开始想的是写Python呜呜呜&#xff09;&#xff0c;直接写php&#xff0c;还能复制粘…

C生万物 | 指针入门到进阶就看这篇了【十万字吐血整理,收藏学习】

文章篇幅较长&#xff0c;可前往电脑端进行学习&#x1f4bb; 之前很多粉丝私信我说C语言指针怎么这么难&#xff0c;看了很多视频都学不懂&#xff0c;于是我写了一篇有关指针从入门到进阶的教学&#xff0c;帮助那些对指针很困扰的同学有一个好的学习途径&#xff0c;下面是本…

基于JavaWeb实现的学生宿舍管理系统

【简介】 本系统是基于Java实现的学生宿舍管理系统&#xff0c;前端&#xff1a;Vue&#xff1b;后端&#xff1a;SpringBoot Mybatis Redis Mysql&#xff1b;系统环境&#xff1a;jdk1.8 | mysql | redis | nodejs14。有包含登录在内的十大功能模块&#xff0c;三个访问角…

详解事务模式和 Lua 脚本,带你吃透 Redis 事务

先说结论&#xff1a; Redis 的事务模式具备如下特点&#xff1a; 保证隔离性&#xff1b;无法保证持久性&#xff1b;具备了一定的原子性&#xff0c;但不支持回滚&#xff1b;一致性的概念有分歧&#xff0c;假设在一致性的核心是约束的语意下&#xff0c;Redis 的事务可以…

Vuex从了解到实际运用(一)彻底搞懂什么是Vuex

vuex从了解到实际运用——彻底搞懂什么是vuex 知识回调&#xff08;不懂就看这儿&#xff01;&#xff09;场景复现核心干货什么是vuex全局状态管理使用状态管理工具后的好处vuex的实现原理vuex的组件通信1.多级组件通信2.同级组件通信使用vuex进行组件通信 关于vuex的小结 知识…

总结842

学习目标&#xff1a; 5月&#xff08;张宇强化18讲&#xff0c;背诵25篇短文&#xff0c;熟词僻义300词基础词&#xff09; 每日必复习&#xff08;5分钟&#xff09; 学习内容&#xff1a; 暴力英语:背200个基础词阅读理解前两段语法 高等数学&#xff1a;强化课第一讲 小…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的Pow伽马变换算法增强(C#)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的Pow伽马变换算法增强&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合Halcon使用Pow伽马变换增强算法1.引用合适的类文件2.BGAPI SDK在图…

gtest之断言

目录 普通断言EXPECT_THAT 布尔条件断言EXPECT_TRUEEXPECT_FALSE 二进制断言EXPECT_EQEXPECT_NEEXPECT_LTEXPECT_LEEXPECT_GTEXPECT_GE 字符串比较EXPECT_STREQEXPECT_STRNEEXPECT_STRCASEEQEXPECT_STRCASENE 浮点型比较EXPECT_FLOAT_EQEXPECT_DOUBLE_EQEXPECT_NEAR 显式成功与…

k8s基础4——deployment控制器、应用部署、升级、回滚、水平扩容缩容

文章目录 一、基本介绍二、应用程序生命周期2.1 部署应用2.2 应用升级2.2.1 修改YAML文件升级&#xff08;交互式&#xff09;2.2.2 命令指定镜像版本升级&#xff08;免交互式&#xff09;2.2.3 调用vim升级 2.3 滚动升级2.3.1 升级流程 2.4 应用回滚2.4.1 查看历史发布版本2.…

yolov5配置错误记录

这里是直接没有找到数据集&#xff0c;说明是路径错误。经过设置yaml后&#xff0c; # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: ../autodl-tmp/datasets/neu # dataset root dir tr…

闲鱼/支付宝 自动收货诈骗套路分析

闲鱼/支付宝 自动收货套路分析 他人闲鱼被骗经历 最近发现闲鱼有一种“自动收货”的套路&#xff0c;就是在闲鱼下单后&#xff0c;卖家发一个二维码&#xff0c;称让你支付运费&#xff0c;该二维码以闲鱼之类的logo为诱惑&#xff0c;让你相信是真的运费支付二维码 正如上文知…

Self-Attention结构细节及计算过程

一、结构 上面那个图其实不是那么重要&#xff0c;只要知道将输入的x矩阵转换成三个矩阵进行计算即可。自注意力结构的输入为 输入矩阵的三个变形 Q&#xff08;query矩阵&#xff09;、K&#xff08;key矩阵&#xff09;、V&#xff08;value矩阵&#xff09;构成&#xff0c;…

Java企业级信息系统02—利用组件注解符精简spring配置文件

文章目录 一、学习目标二、打开01的项目三、利用组件注解符精简spring配置文件&#xff08;一&#xff09;创建新包&#xff0c;复制四个类&#xff08;二&#xff09;修改杀龙任务类&#xff08;三&#xff09;修改救美任务类&#xff08;四&#xff09;修改勇敢骑士类&#x…

Mac安装docker

一、docker是什么&#xff1f; 1、Docker的三个基本概念: Image(镜像)Container(容器)Repository(仓库) Docker的思想来自于集装箱&#xff0c;集装箱解决了什么问题&#xff1f; 在一艘大船上&#xff0c;可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了&a…

你还不知道啊,iPhone手机恢复出厂设置的那些事!

案例&#xff1a;手机恢复出厂设置 【友友们&#xff0c;苹果手机想要挂闲鱼&#xff0c;里面有很多隐私。想要恢复出厂设置来清除手机数据&#xff0c;该怎么进行&#xff1f;有什么需要注意的吗&#xff1f;】 iPhone手机想要进行二次销售&#xff0c;我们一般都会采取方法来…

[面试题] 判断二维空间中一点是否在旋转矩形内部

[面试题]&#xff1a;判断二维空间中一点是否在旋转矩形内部 参考&#xff1a; 1. 判断点是否在一个矩形内 2. 向量点乘与叉乘的概念及几何意义 3. 向量叉乘 4. 向量叉乘的正负意义 5. 本工程完整代码 题目描述 已知条件&#xff1a;旋转矩形中心center(x,y), 旋转矩形的长…

asp.net基于web的学生选课成绩管理系统86程序

系统使用Visual studio.net2010作为系统开发环境&#xff0c;并采用ASP.NET技术&#xff0c;使用C#语言&#xff0c;以SQL Server为后台数据库。 本系统主要包含了“登录模块”、“系统用户管理模块”、“课程信息管理模块”、“教师信息管理模块”、“班级信息管理模块”、“…

Word控件Spire.Doc 【打印】教程(2):保打印word文档不显示打印处理对话框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

对标世界一流|弹性应对“供应链不确定性常态化” ——快消与重资产行业的经验互鉴

1963年&#xff0c;气象学家洛伦兹提出的“蝴蝶效应”表示&#xff1a;“一只蝴蝶在巴西扇动翅膀&#xff0c;有可能会在美国德克萨斯州引起一场龙卷风”。本文希望通过提供快消行业的先进实践&#xff0c;帮助重资产企业从“蝴蝶扇动翅膀”之前就开始行动&#xff0c;避免“龙…

Design principle: Immutability不可变性与对mutable变量的Synchronization方法

不可变性&#xff08;Immutability&#xff09;在设计模式中是指一个对象在创建后其状态就不能改变。这是一种编程思想和设计原则。在某些情况下&#xff0c;使用不变对象可以带来许多好处&#xff1a; 简化代码 make things very simple&#xff1a;不可变对象在创建后状态不会…