C++数组与字符数组

来源:互联网 发布:骑俄罗斯大洋马 知乎 编辑:程序博客网 时间:2024/05/16 17:20

C++数组

数组”是有限个同类型元素的有序集合,这些元素有一个共同的名字,即“数组名”。每个元素以其在数组中的位置区分,位置用“下标”表示。

例如:数列或向量就可以看作一个数组,其中的元素用一个下标即可确定;矩阵也可看作一个数组,其中的元素需要用“行”、“列”两个下标确定。

数组下标的个数称“维数”,代表数列的数组和代表矩阵的数组分别称为一维数组和二维数组。

◆  1、一维数组的定义
定义一个一维数组的一般格式为:
    [存储类型] <数据类型> <数组名> <[常量]>

其中:

  • 数据类型——指数组中元素的数据类型,可以是C++中定义的任何一种数据类型。
  • 常量——写在中括号中,用来定义数组大小,即数组中元素的个数。

举例:
    int m[5];    //定义整型数组m, 其中有5个整数
    const int N=3;
    float x[N]; //定义浮点型数组x,其中有3个实数

注意:数组大小不能用变量定义,而只能是一个正整数常量。

在C++中,数组大小在编译时确定。编译系统根据数组的定义为其分配一段连续的存储单元,且一经分配不能改变。因此,数组大小不能用变量定义,而只能是一个正整数常量。

例如,下列定义是非法的:
    int count;
    float s[count];   //数组大小不能是变量;
    const float Num=3;
    int n[Num];       //数组个数不能是实数

◆  2、数组的初始化

  • 一般方法:在定义时用大括号列出元素的值,例如:int score[5]={88, 92, 90, 85, 78};
  • 初始化值少于元素个数的用法:初始化值的个数少于定义的元素个数时,从第0个元素开始逐个取得初始化值,其余的元素初始化为0。例如:
        float y[5]={3.4,4.2,7};//5个元素的取值分别为3.4,4.2,7,0,0
  • 缺省维数的用法:初始化时可以不指明元素个数,编译器会按照初始化值的个数确定数组大小。例如:
        int n[]={1, 2, 3, 4}; //数组n有4个元素
        int nn[]; //非法定义,不是初始化时定义数组必须指明数组元素个数

◆  3、数组的使用

  • 数组的存储形式:数组在存储单元中是按下标的顺序连续存放的。例如,上面定义的数组m的存储如下图所示:
  • 访问方式:数组中任何一个元素都可以单独访问,访问的一般格式为:
        数组名[表达式]
    其中,“表达式”用来计算下标值。C++中规定数组第一个元素的下标为0。

注意:对数组的访问指的是对数组元素的访问,一般不能直接将数组名作为访问对象,对数组赋值也必须对每一个元素逐个赋值。

字符数组

如果数组中的元素为字符,就称为“字符数组”。例如:
    char string1[10];    //可用来保存10个字符的字符数组
    char city_name1[]={'N','a','n','j','i','n','g'}; //7个字符的字符数组

C++中字符数组可用来处理字符串,允许直接用字符串常量对字符数组初始化。此时,系统会自动加上一个串结束符′/0′。例如:
    char city_name2[]=”Nanjing”;
则字符数组city_name2实际占用的内存比city_name1多一个字节。

串结束符′/0′在字符串操作中具有十分重要的意义,因此,在定义字符数组大小时,应注意留出保存串结束符的空间。

除了可以用字符串常量初始化外,字符数组的用法与一般数组是一样的。

另外,C++中提供若干字符串处理函数,在头文件<cstring>中定义。其中包括strlen、strcpy等。

  • strlen(s) —— 返回字符串s的实际长度(不包括′/0′)。
  • strcpy(s1,s2) —— 将字符串s2中′/0′之前的所有字符依次赋值到字符串s1中,最后再加上一个′/0′。

由于不能直接对字符数组名赋值,所以将一个字符串的值赋给另一个字符串必须用字符串复制函数完成。例如:
    char string2[20];
    string2=”VC++”;//非法
    strcpy(string2, “VC++”); //合法

原创粉丝点击