模型预测控制 索引超出数组元素的数目(0)。_C++基础总结(二):C++基本数据类型及流控制语句详解...

44665f59d3f905416fbdfb8bbae6fe54.png

上次分享了hello world, 今天小编分享 C++基本数据类型及流控制语句 ,建议大家收藏慢慢学习,同时希望对大家的C++学习有所帮助。

8b25d10208177b7aabda1dae069dcde7.png

C++ 数组

C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。

所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。

声明数组

在 C++ 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示:

type arrayName[arraySize];

这叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C++ 数据类型。例如,要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句如下:

double balance[10];

现在 balance 是一个可用的数组,可以容纳 10 个类型为 double 的数字。

初始化数组

在 C++ 中,可以逐个初始化数组,也可以使用一个初始化语句,如下所示:

double balance[5]={1000.0,2.0,3.4,7.0,50.0};

大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。

如果省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果:

double balance[]={1000.0,2.0,3.4,7.0,50.0};

将创建一个数组,它与前一个实例中所创建的数组是完全相同的。

98e8afd9395af5da15f371cda5803aad.png

下面是一个为数组中某个元素赋值的实例:

balance[4]=50.0;

上述的语句把数组中第五个元素的值赋为 50.0。所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。以下是上面

所讨论的数组的的图形表示:

49ac69e05f4755aaf6c5825e4aa43f14.png

访问数组元素

数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如:

double salary=balance[9];

上面的语句将把数组中第 10 个元素的值赋给 salary 变量。下面的实例使用了上述的三个概念,即,声明数组、数组赋值、访问数组:

#include<iostream>using namespace std;
#include<iomanip>using std::setw;intmain(){
int n[10];
// n 是一个包含 10 个整数的数组
// 初始化数组元素
for ( int i = 0; i < 10; i++ ) {
n[ i ] = i + 100;
// 设置元素 i 为 i + 100 }
cout << "Element" << setw( 13 ) << "Value" << endl;
// 输出数组中每个元素的值
for ( int j = 0; j < 10; j++ ) {
cout << setw( 7 )<< j << setw( 13 ) << n[ j ] << endl; }
return 0;}

C++ 字符串

C++ 提供了以下两种类型的字符串表示形式:

C 风格字符串

C++ 引入的 string 类类型

C 风格字符串

C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 '0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。

char greeting[6]={'H','e','l','l','o','0'};

依据数组初始化规则,可以把上面的语句写成以下语句:

char greeting[]="Hello";

以下是 C/C++ 中定义的字符串的内存表示:

2359d6bce7b5a9ff75548275e09719c0.png

b7d79a8dbe2d744f540afaca844c0f8b.png

其实,不需要把 null 字符放在字符串常量的末尾。C++ 编译器会在初始化数组时,自动把 '0' 放在字符串的末尾。让我们尝试输出上面的字符串:

实例

#include<iostream>using namespace std;intmain(){
char greeting[6]={'H','e','l','l','o','0'};
cout<<"Greeting message: ";
cout<<greeting<<endl;
return0;}

当上面的代码被编译和执行时,它会产生下列结果:

Greeting message:Hello

C++ 中有大量的函数用来操作以 null 结尾的字符串:supports a wide range of functions that manipulate null-terminated strings:

6c63941ee123c9c99368ee44365dd29c.png

下面的实例使用了上述的一些函数:

实例

#include<iostream>#include<cstring>using namespace std;intmain(){
char str1[11]="Hello";
char str2[11]="World";
char str3[11];
int len;
// 复制 str1 到 str3 strcpy( str3, str1);
cout << "strcpy( str3, str1) : " << str3 << endl;
// 连接 str1 和 str2 strcat( str1, str2);
cout << "strcat( str1, str2): " << str1 << endl;
// 连接后,str1 的总长度 len = strlen(str1);
cout << "strlen(str1) : " << len << endl;
return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

strcpy( str3, str1) : Hellostrcat( str1, str2): HelloWorldstrlen(str1) : 10C++ 中的 String 类

0627ba5b16fba3b3bc7a13e2e05d92a0.png

C++ 标准库提供了 string 类类型,支持上述所有的操作,另外还增加了其他更多的功能。现在让我们先来看看下面这个实例:

实例

#include<iostream>#include<string>using namespace std;intmain(){
string str1="Hello";
string str2="World";
string str3;int len;
// 复制 str1 到 str3 str3 = str1;
cout << "str3 : " << str3 << endl;
// 连接 str1 和 str2 str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// 连接后,str3 的总长度 len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

str3:Hellostr1+str2:HelloWorldstr3.size():10

C++ 循环

有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

编程语言提供了允许更为复杂的执行路径的多种控制结构。

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:

80875e4dcc0ef50fac7b7eca4f49856d.png

循环类型

C++ 编程语言提供了以下几种循环类型。

273616bbdebe2ac27883fec0380769f0.png


循环控制语句

循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。

C++ 提供了下列的控制语句。

50b245c06868e471b8e3bc13e6c22f28.png


无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,可以将某些条件表达式留空来构成一个无限循环。

实例

#include<iostream>using namespace std;intmain(){
for(;;){
printf("This loop will run forever.n");}
return0;}

当条件表达式不存在时,它被假设为真。也可以设置一个初始值和增量表达式,但是一般情况下,C++ 程序员偏向于使用 for(;;) 结构来表示一个无限循环。

注意:可以按 Ctrl + C 键终止一个无限循环。

C++ 判断

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

下面是大多数编程语言中典型的判断结构的一般形式:

a1d037448907e9c19d5220078d5a9569.png


判断语句

C++ 编程语言提供了以下类型的判断语句。

7e0321287f20792aafce42b6a7115a15.png

好了,以上就是对 C++基本数据类型及流控制语句的分享。

如果你喜欢这篇文章的话,动动小指,加个关注哦~

b5b97231feb64565904aea89325bd451.gif

如果你也想成为程序员,想要快速掌握编程,这里为你分享一个学习企鹅圈子!

里面有资深专业软件开发工程师,在线解答你的所有疑惑~C++入门“so easy”

编程学习书籍:

a6e543ed13b52c747805a8bb29a3b624.png

编程学习视频:

b19b710fb0f420effbea052925fbf125.png

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

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

相关文章

ajax将数据显示在class为content的标签中_利用selenium实现自动翻页爬取某鱼数据

基本思路:首先用开发者工具找到需要提取数据的标签列表:利用xpath定位需要提取数据的列表然后再逐个提取相应的数据:保存数据到csv:利用开发者工具找到下一页按钮所在标签:利用xpath提取此标签对象并返回&#xff1a;调用点击事件,并循环上述过程:最终效果图:代码:from seleniu…

实体嵌入(向量化):用深度学习处理结构化数据

摘要&#xff1a; 本文详细阐述了深度学习如何来实现处理结构化数据的方法。嵌入源自于NLP&#xff08;word2vec&#xff09;中的单词学习&#xff0c;上图来自Aylien本博文将涉及机器学习中两个重复出现的问题&#xff1a;第一个问题是深度学习在图像和文本中都有较好的表现&a…

arcengine遍历属性表_Excel催化剂-遍历文件夹内文件信息特别是图像、音视频等特有信息...

在过往的功能中&#xff0c;有体现出在Excel上管理文件的极大优势&#xff0c;在文件的信息元数据中&#xff0c;有图片和音视频这两类特有的属性数据&#xff0c;此篇对过往功能的一个补充&#xff0c;特别增加了图片和音视频信息的遍历功能。使用场景在文件管理过程中&#x…

想要成为数据科学家?知道这11种机器学习算法吗?

摘要&#xff1a; 想要成为数据科学家&#xff1f;知道这十几种机器学习算法吗&#xff1f;赶快来了解一下吧&#xff0c;文中附各种算法的资源地址&#xff01; 机器学习从业者都有不同的个性&#xff0c;虽然其中一些人会说“我是X方面的专家&#xff0c;X可以训练任何类型的…

Docker精华问答 | Consul是什么?

在计算机技术日新月异的今天, Docker 在国内发展的如火如荼。特别是在一线互联网公司 Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项&#xff0c;那么今天我们继续关于Docker 的精华问答。1Q&#xff1a;Consul是什么&#xff1f;A&#xff1a;Consul是一个分布式…

2020科目一考试口诀_二级建造师考试科目有哪些2020

2020二级建造师考试科目有哪些&#xff1a;2020年二级建造师考试设《建设工程施工管理》、《建设工程法规及相关知识》两个公共科目和《专业工程管理与实务》科目(包含六个专业类别&#xff0c;任选一科报考)。(一)《专业工程管理与实务》科目分为6个专业类别&#xff1a;建筑工…

机器学习用于金融市场预测难在哪?

摘要&#xff1a; 本文主要讲述了机器学习用于金融市场预测难在哪&#xff1f;——金融间序是典型的部分可见马尔科夫决策过程&#xff08;POMDP&#xff09; 数据分布 小样本 难以计算的数据 十分复杂 部分可见马尔科夫决策过程 推荐系统的相似性 结束思索金融市场已经成为最早…

full join 和full outer join_多表关联:公式展开、join、过滤条件的顺序

这是在实现多表关联时想到的。我们现在这套体系&#xff0c;实现多表关联比较复杂。如果Superset能官方支持多表关联&#xff0c;不知道会是什么样的方案&#xff0c;复杂度如何。在公式这个层面&#xff0c;没有关联条件&#xff0c;只有两个列、或者多个列&#xff0c;相互之…

异构计算助力客户春节webp图片编码

摘要&#xff1a; 背景与挑战 技博客 GigaOM 曾报道&#xff1a;YouTube 的视频略缩图采用 WebP 格式后&#xff0c;网页加载速度提升了 10%&#xff1b;谷歌的 Chrome 网上应用商店采用 WebP 格式图片后&#xff0c;每天可以节省几 TB 的带宽&#xff0c;页面平均加载时间大约…

发动机压缩比怎么计算公式_怎么判断发动机有积碳,发动机积碳多的症状有哪些...

经过时间的积累&#xff0c;积碳作为发动机的通病几乎无处不有&#xff0c;很多车主也对此十分头疼。不过&#xff0c;很多车主小白并不了解车辆积碳是如何产生的&#xff0c;更不知道如何判断发动机是否有积碳&#xff0c;其实发动机积碳多的症状很容易让车主误以为车辆出现其…

Kubernetes之路 1 - Java应用资源限制的迷思

摘要&#xff1a; 随着容器技术的成熟&#xff0c;越来越多的企业客户在企业中选择Docker和Kubernetes作为应用平台的基础。然而在实践过程中&#xff0c;还会遇到很多具体问题。本文分析并解决了Java应用在容器使用过程中关于Heap大小设置的一个常见问题。随着容器技术的成熟&…

你家的饮水机,到底可以有多脏?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 胡巍巍出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;几年前&#xff0c;笔者在一所培训学校工作。因为学生多、学校大&#xff0c;老师也多&#xff0c;自然办公室也多。这种情况下&#xff0c;学校为了省事&a…

java http get_我是如何进入阿里巴巴的-面向春招应届生Java面试指南(九)

基础篇基本功面向对象的特征1.final, finally, finalize 的区别 final—修饰符&#xff08;关键字&#xff09;如果一个类被声明为final&#xff0c;意味着它不能再派生出新的子类&#xff0c;不能作为父类被继承。因此一个类不能既被声明为 abstract的&#xff0c;又被声明为f…

链表的快慢指针思想的解决

看接下来的一道题目 1、给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 例子&#xff1a;[1,2,3,4,5] 返回中间节点3 [1,2,3,4,5,6] 返回中间节点4 我们该如何做呢&#xff0c;首先这里用到了快慢…

使用Helm 在容器服务k8s集群一键部署wordpress

摘要&#xff1a; Helm 是啥? 微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目&#xff0c;做为Kubernetes应用的一个包管理工具&#xff0c;可理解为Kubernetes的apt-get / yum&#xff0c;由Deis 公司发起&#xff…

Jupyter Notebook数据科学高效技巧

摘要&#xff1a; 本文有一些关于Jupyter Notebook的干货&#xff0c;希望看完文章可以给你带来收获当我学习有关深度学习的优秀的fast.ai课程时&#xff0c;我学到了很多适用于通用软件工程的干货。我写这篇文章是为了总结这些技巧并与你分享。1.Jupyter Notebook拓展标准的Ju…

格罗方德起诉台积电侵犯16项专利、影响巨大;中兴通讯与印尼Smartfren展开合作;网传FB开发新通讯应用Threads……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 索尼将于9月5日在IFA 2019上…

JS之前台参数提交到后台,双引号转义为解决办法

问题描述 var param $("#searchForm").serializeJson(); 前台封装好了键值对形式的字符串&#xff0c;使用了EasyUI的treeGrid控件&#xff0c;传到后台后&#xff0c;双引号转义为" 解决办法 apache工具包common-lang中有一个很有用的处理字符串的工具类&am…

MaxCompute理解数据、运算和用户的大脑:基于代价的优化器

摘要&#xff1a; 回顾大数据技术领域大事件&#xff0c;最早可追溯到06年Hadoop的正式启动&#xff0c;而环顾四下&#xff0c;围绕着数据库及数据处理引擎&#xff0c;业内充斥着各种各样的大数据技术。在云栖社区2017在线技术峰会大数据技术峰会上&#xff0c;阿里云大数据计…

MaxCompute与OSS非结构化数据读写互通(及图像处理实例)

摘要&#xff1a; MaxCompute作为阿里巴巴集团内部绝大多数大数据处理需求的核心计算组件&#xff0c;拥有强大的计算能力&#xff0c;随着集团内外大数据业务的不断扩展&#xff0c;新的数据使用场景也在不断产生。在这样的背景下&#xff0c;MaxCompute&#xff08;ODPS&…