热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C++语言入门:数组的基本知识和应用领域

本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。

无论是C++还是Python都只是一门编程语言,是语言最起码要能看懂,不需要精通,就如你会说话,却不一定是演讲家一样~


01

Python和C ++有着根本的区别,最大的区别是C ++是静态类型的,而Python是动态类型的。Python是原生支持面向对象范式的语言,C不是。它们有各自的应用领域,没有孰强孰弱,两者结合一下看能是极好的,

C++有它的特点,结构化语言的显著特点是代码及数据的分隔化,程序的各个部分除了必要的信息交流外彼此独立,这种结构化方式可使程序层次清晰,便于使用、维护以及调试。

C++语言一共只有32个关键字和9种控制语句,程序书写自由。它把高级语言的基本结构和语句与低级语言的实用性结合起来,既具有高级语言的功能,又具有低级语言的很多特性,C++语言可以像汇编语言一样对位、字节和地址进行操作,C++语言在代码效率方面可以和汇编语言相媲美,一般只比汇编程序生成的目标代码效率低10-20% 。

C++语言的运算符包含的范围很广泛,共有种 34 个运算符。运用这些运算符可构成简洁而功能强大的表达式,表达式的类型灵活多样,可以实现在其它高级语言中难以实现的运算。

C++语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。 

看完K12的信息技术课本你会觉得学编程,C基础还是应该普及一下。大多数人印象中小学、初中没学过编程,是因为不是没有是没学。


02

每次都说些废话,只是想更多了解它。

计算机运算速度很快,一瞬间就可以处理成千上万的数据。前面例子基本都是读取一个数据后立刻对这些数据进行处理,然后再也用不到这些数据了。但有些时候我们需要将这些数据保存下来,便于再次使用。

比如比较几个数的大小,找出最大值和最小值,如果少了可以设立几个变量存储,但是如果要比较的是成千上万个数,你定义成千上万个变量是不是感觉有点傻?

还有在生活中,我们常常会用一个数字对应一个数字(也有可能是其他类型)来统计数据,比如学号对应成绩,日期对应事件等等,在C++中,就需要用到一个叫数组的数据容器。

数组不仅可以存储输入的数据,还能存下运算过程中的“半成品”甚至答案,是 C++ 中非常重要的一部分。

所谓数组,是有序的元素序列。

若将有限个类型相同的变量的集合命名,那么这个名称为数组名。

组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。

数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。

1、数组的声明
数组的声明与变量的声明类似,其格式用中文表示如下

数据类型 数组名字[数组大小];

例如想要声明一个"一个数字对应一个整数,共100个数"的数组a的代码如下:

int(数据类型) a[100](数组名字[数组大小]);

一个整数:数据类型-int

共100个数:数组大小-100,数组大小不能为变量

数组a:数组名字-a

比如下面代码,定义了一个整型数组nums,在C++11版本后对于数组的赋值"="可以省略。

int nums[] {1,2,3,4};


也可以这样:

int nums[4] = {1,2,3,4};


要注意的是大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 [ ] 中指定的元素数目。如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数。

了解以下定义的含义:

int a[10];//未赋给初值的数组,每个元素的初值可能为随机数
int a[10]={1,2,3,4,5,6,7,8,9,10}
int a[10]={1,2,3,4,5}//仅对前五个元素赋予初值,从第六个元素开始,后面的元素均为0
int a[10]={}//仅写一个括号,这样所有的元素的初值都为0
double b[10];
char str[10];

2、再了解一个词:数组下标

如同变量一样,数组的运算只不过是在很多个大同小异的变量中挑出一些来运算而已,比如,我想要让a数组里的第3个元素的值变为1,就可以写成这样:

a[2]=1;

第3个元素为什么编号是2呢?是因为数组的编号(学名下标)是从0开始的,一直到(数组大小-1),在X数组里的第y个元素的代码表达式如下:

X‍‍[y-1];‍‍br

让a数组中的第i个元素赋值为a数组中的第i-1个元素与第i-2个元素之和的代码如下:

a[i-1]=a[i-2]+a[i-3];

一定要注意:a[i]代表的是第i+1个元素,不是第i个元素,下标不能大于等于数组大小,不能小于0,否则会导致数组越界,导致程序崩溃。比如下面的代码:

#include
using namespace std;
int main(){
  int a[3];
  a[-1]=0;//导致数组越界,其下标小于0
  a[1]=1;
  a[2]=2;
  a[3]=3;//导致数组越界,其下标大于等于数组大小
  return 0;
}

3、然后再了解一个词:遍历

所谓遍历,是指沿着某条搜索路线。这个很好理解。数组的遍历就是过一遍数组。熟悉下面代码的意思:

#include
using namespace std;
int main(){
  int a[5];
  for(int i=0;i<5;i++) cin>>a[i];//依次输入a[0],a[1]……a[4]
  for(int i=0;i<5;i++) cout<
  return 0;
}


03


了解了基本概念后来看本次的目标:遍历数据,记录最大最小值,打印输出最大最小值。

首先设置一数组,定义一组固定数据:

int nums[]{ 107, 117, 106, 105, 97, 111 };       
//int nums[] = { 107, 117, 106, 105, 97, 111  };   //两种方式均可   

然后遍历数组,记录最大值和最小值:

for(int i = 0; i <5; i++)
{
if(nums[i] > max)
{
max = nums[i]; //记录最大值
maxIndex = i ; //记录最大值的下标
}
if(nums[i]
{
min = nums[i]; //记录最小值
minIndex = i; //记录最小值的下标
}
}


下面是完整代码,利用利用了求数组的方式,

sizeof是一个操作符(operator),其作用是返回一个对象或类型所占的内存字节数,就是说它是用来描述一个对象占多少内存字节数的,所以它的数组大小应该是sizeof(arrayint)/sizeof(arrayint[0]),这样做的好处是可以让代码更人性化。

#include 
using namespace std;
int main()
{
    int nums[]={ 107, 117, 106, 105, 97, 111 };        //数组
int max = nums[0]; //最大值
int min = nums[0]; //最小值
int maxIndex = 0; //最大值的下标
    int minIndex = 0;                  //最小值的下标
int numsLen = sizeof(nums)/sizeof(int);
      //计算数组长度 
for(int i = 0; i
{
if(nums[i] > max)
{
max = nums[i]; //记录最大值
maxIndex = i ; //记录最大值的下标
}
if(nums[i]
{
min = nums[i]; //记录最小值
minIndex = i; //记录最小值的下标
      } 
    }
cout <<"最大值是" <
    cout << "最小值是" << min << "\t" <<"下标是"<< minIndex << endl ;
return 0;
}

运行结果:

04

最后简单提一下c++中的字符数组和字符串string。

C++中字符数组用char str[]可以用来表示一个字符串。数组的大小一定要大于字符串的长度,因为系统会自动补上一个’\0’作为字符串的结束标志,对于未初始化的也补’\0’。

关于字符串和字符数组后面还会提起,因为在应用中可能会多次的出现。要想今天说明白,估计~没有估计,不说了!!

#include
using namespace std;
int main()
{
char str[10] = "I am cool"; // 系统会自动补上'\0'空字符作为结束标志,,未有初始化的也补'\0'
//char str[9] = "I am cool"; // 出错 系统自动补上'\0' 此时字符数组长度不够
//char str[12] = "I am cool"; // 后面未有初始化的也补上'\0' 为 I am cool\0\0\0
if(str[9] == '\0')
{
cout <<"hello world!!" <<endl;
}
return 0;
}

    「您的每一个  对我们都是鼓励」



推荐阅读
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
author-avatar
阵风阿斯顿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有