C---数组

利用数组来批量处理数据

数组

如果大量数据具有相同属性并且具有内在联系, 就没必要分别给他们分配变量, 利用一个数组就可以储存所有的数据

数组就是用一个统一的名字代表这批数据, 用序号下标来区分各个数据, 数组中的数据被称为数组元素

定义和引用(一维数组)

定义(一维数组)

  • 定义数组的一般形式为

    类型名 数组名[常量表达式]

    其常量表达式支持利用定义好的变量进行运算

    注意:一定要使用确定的常变量, 由流输入的未确定变量是不可以用于数组的定义的

    如图:

    52error

    比如:

    1
    int a[10];

    表示数组名为a, 类型整形, 共计10元素, 元素脚标从[0-9]

引用(一维数组)

想要引用数组就直接键入其对应的数组元素即可, 格式为数组名[下标数值]

同样下标数值也可以是整形常量整形表达式

如果单独使用数组名, 则返回的是该数组首个元素的地址

(所以数组名可以直接赋值给指针)

1
a[0] = a[5] + a[7] - a[2*3]

确定元素的值

定义好数组之后, 其中的每个元素都有对应的内存可供使用, 但其中都是没有数值的, 想要对其赋值, 就要用到其对应的元素名

元素名 = 对应数值的格式可以用于定义/修改一个指定元素的值

如过想在开始的时候就用对元素的值来依次进行定义, 就可以用到与变量差不多的初始化

下面是一个10位整形一维数组的简单初始化

1
2
3
4
5
6
// 直接对整个数组进行初始化
int a[10] = {0,1,2,3,4,5,6,7,8,9,0};
// 对部分数据先初始化, 剩下的会自动被赋值'0'
int b[10] = {0,1,2,3,4,5};
// 对一个数组进行完全初始化时可以不定义其位数
int c[] = {0,1,2,3,4,5};

二维数组

二维数组就是具有两个下标的数组, 有些数据需要两个因素才能确定其具体值, 所以就有了二位数组

定义二维数组

就是比一维数组多一个脚标而已

1
类型 标识符[常量表达式][常量表达式] 

多维数组就依此类推脚标即可

二维数组初始化

二维数组的初始化, 有两种方法(假定一个int a[3][3])

  • 数组嵌套

    可以将二维数组想象成一维套一维

    1
    a[3][3] = { {1,2,3} , {4,5,6} , {7,8,9} };
  • 脚标排序

    或者是依靠脚标顺序来进行自动赋值, 前提是各级脚标或二级长度大小已经确定

    1
    2
    3
    a[3][3] = {1,2,3,4,5,6,7,8,9};
    //or
    a[][3] = {1,2,3,4,5,6,7,8,9};

不论那种方法, a的数学表达就像矩阵一样

a
1 2 3
4 5 6
7 8 9

二维数组的调用

调用也几乎与一维数组一致, 确定脚标, 如何调用就根据程序来确定

字符数组

字符数组的赋值与数字型数组的赋值有些许的区别

赋值

在我们定义一个字符串时, 其在系统变量中通常会在结尾出现一个'\0'来代表字符串的结束

所以为了计算长度, 我们通常也会在字符数组的结尾手动添加一个\0来代表结束

调用

字符数组有两种输出方式, 逐个输出连续输出

逐个输出就利用脚标来进行调用

连续输出就直接调用数组名, 系统会自动根据脚标顺序来对输出对象进行排序

字符数组的字符串处理

字符串也是一种数组, c++中, 字符串操作函数都要把他们转成数组形式来进行操作

字符数组连接函数

1
strcat(char1[], const char2[]);

将char1和char2合并放入char1

字符数组复制函数

1
strcpy(char1[], const char2[]);

将char2覆盖到char1

字符数组比较函数

1
strcmp(const char1[], const char2[]);

其返回值有三种:

  • char1===char2 0
  • char1>char2 >0
  • char1<char2 <0

比较方法为, 从左至右依次比较, 直到出现不同

字符数组长度

1
strlen(const char[]);

直接返回该字符数组的长度

如”China” ==> {‘C’,’h’,’i’,’n’,’a’,’\0’}

返回值6

字符串

字符串变量定义

在c++语法中新增了string类, 也就是字符串相比char类只储存单个字符, string允许用户储存字符串数组为一整个字符串对象

  • 定义方法

    1
    string stringName;

但要注意的是, c++来源是c语言的升级, c语言中原本是没有string类的, 所以想使用string类, 要添加预处理语句

1
#include <string>

有关字符串的输入输出

使用C++的流式输入输出即可 也就是 cincout

有关字符串运算

string类可以使用三种运算符

  • 直接使用赋值符号

    1
    stringName = "I am a string object"
  • 直接进行相加

    1
    2
    3
    4
    5
    string str1,str2,strSum;
    str1 = "str1";
    str2 = "str2";
    strSum = str1 + str2;
    cout << strSum;

    输出:

    1
    str1str2
  • 互相进行比较

    string对象之间可以互相进行比较, 可以使用任意一种关系运算符

    其大小关系是根据ASCII码来区分的, 也就是跟字母排列顺序差不多

字符串数组

字符串数组就是一个可以存放字符串的数组, 其元素都是字符串

调用时, 其每个元素都将被当成一个字符串对象来处理

总结, C++中对于字符串有两种处理方法, 第一种是字符数组, 第二种是字符串类, 个人从python上遗留的习惯导致我更喜欢使用后者, 因为真的更加简单

  • Copyrights © 2024 Cdog Shen
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信