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

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};

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

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

balance[4]=50.0;

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

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

访问数组元素

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

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++ 中定义的字符串的内存表示:

其实,不需要把 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:

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

实例

#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 类

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++ 循环

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

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

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

循环类型

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

循环控制语句

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

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

无限循环

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

实例

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

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

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

C++ 判断

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

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

判断语句

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

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

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

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

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

编程学习书籍:

编程学习视频:

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

  1. 运行差分灰狼时出现 关于“索引超出数组元素的数目(0)和矩阵维度问题以及图例的问题”的解决办法

    问题一:索引超出数组元素的数目(0) 看截图,上面注释掉的libsvmpredict是出错的, 下面一句是修改后的. [~,~,fitness]=libsvmpredict(output_test,i ...

  2. matlab出现索引超出数组元素的数目(0)怎么解决

    Matlab 出现索引超出数组元素的数目 (0) 通常表示你试图访问一个空数组或者超出数组索引的范围.以下是一些可能的解决方案: 检查你的代码,确保没有在程序中使用空数组. 检查数组的索引是否正确.例 ...

  3. Matlab 常见错误(1)——提示“数组索引必须为正整数或逻辑值”或者“索引超出数组元素的数目”

    我自己出现这个错误的代码,是在想对契比雪夫方向图进行采样时.代码如下: S=20; dS=0:2000/(2*S):2000; theta1=0:180/(2*S):180; for k=1:41Y( ...

  4. Matlab——报错解决:Robotics Toolbox使用plot()或者teach()机器人报错:索引超出数组元素的数目(4)

    报错 解决方法 在plot或teach之前,添加代码: view(3) 参考文章: 机器人工具箱plot机器人失败

  5. 索引超出数组元素的数目(1)

    求大神指点,这个程序怎么改.我是超级新新人

  6. 前端:JS/20/数组(数组的概念,数组元素,数组索引,数组元素的访问,数组的长度,数组的创建方法,数组的操作,实例:使用数组保存个人信息,实例:求数组所有值的平均值,数组对象的length属性)

    数组 1,数组的概念 一组值(或对象)的集合,称为"数组": var arr =[10,20,30,50]; var arr =["张三","男&qu ...

  7. matlab 判断元素索引_MATLAB通过索引访问数组元素

    所谓索引,就是元素在数组这块内存中的顺序号,这与班级里的学号.银行的排号是一样的. 要想知道某个元素的索引,首先得知道数组元素在内存中是如何排布的. 对于一维数组,元素从前往后挨着存储即可:下标为 1 ...

  8. Matlab中出现“位置1处的索引超出数组边界(不能超过1)”

    我是一个matlab小白,前几天刚准备学习机器学习的相关知识,但是下面的代码一直提示我"位置1处的索引超出数组边界(不能超过1)". 好像出错在71行的"ans(j,:) ...

  9. php 数组大于1,位置 1 的索引超出数组范围(不能超过 1)。

    %清空运行环境 clc clear %速度更新参数 c1 = 1.49445; c2 = 1.49445; maxgen = 300; %最大迭代次数 sizepop = 20; %种群规模数 %个体 ...

最新文章

  1. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式
  2. LeetCode_每日一题今日份_343.整除拆分
  3. Java并发编程—notify和notifyAll有什么区别?
  4. HTML子选择器怎么加图,CSS伪类选择器:before、:after使用:插入字符、插入图片、插入项目编号...
  5. 最佳5本Java性能调优书籍–精选,必读
  6. 服务器是计算机的一种 是指,pc服务器是指什么意思
  7. 程序人生--一个程序员对学弟学妹建议
  8. mybatis实战之拦截器
  9. 【imx6ul】从头搭建imx6ul开发环境(uboot、内核编译及烧入、mfgtools详细使用方法)
  10. ORACLE账户提示EXPIRED(GRACE)问题解决
  11. 服务器异常原因和解决方法
  12. 中文分词之维特比算法详解
  13. eplan支持mysql_EPLAN软件平台系统和电脑要求
  14. GaussDB(for MySQL)近数据处理(NDP)解锁查询新姿势
  15. VTK可交互三维坐标轴
  16. 华师大 OJ 3026
  17. Retrofit响应数据及异常处理策略
  18. 内存检测工具sanitize
  19. Linux pidstat命令实战
  20. SpringBoot 引入线程池+Queue缓冲队列实现高并发下单业务

热门文章

  1. MaxCompute Spark 使用和常见问题
  2. 顶会论文看不懂?阿里巴巴技术专家为你全方位解读!
  3. 一篇小文带你走进RabbitMQ的世界
  4. 10个一行代码就能搞定的编程技巧
  5. 阿里云 ESSD 采用自研新一代存储网络协议,打造“超级高速”
  6. PyODPS开发中的最佳实践
  7. 助力APP尽情“撒币”!阿里云正式上线移动直播问答解决方案
  8. 从工具到平台|默安科技研发安全一体化管理平台正式发布
  9. 腾讯安全发布安全托管服务MSS,推动网络安全建设向服务驱动转变
  10. 开源项目如何挣钱? Spark 商业化公司创始人曝光心路历程