热门标签 | 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;
}

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



推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本题探讨了一种字符串变换方法,旨在判断两个给定的字符串是否可以通过特定的字母替换和位置交换操作相互转换。核心在于找到这些变换中的不变量,从而确定转换的可能性。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
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社区 版权所有