C语言——数组

一、一维数组的定义和引用

1、一维数组的定义

        一维数组的定义方式为:
        类型说明符        数组名[常量表达式];

1)、一维数组说明

        (1)数组名的命名规则和变量名相同,遵循标识符命名规则。
        (2)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。
        (3)常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。

2、一维数组元素的的引用

        数组必须先定义,然后使用。C语言规定只能逐个引用数组元素而不能一次引用整个数组。
数组元素的表示形式为:

        数组名[下标]

        下标可以是整型常量或整型表达式。

3、一维数组的初始化

        对数组元素的初始化可以用以下方法实现。
                (1)在定义数组时对数组元素赋予初值。
                (2)可以只给一部分元素赋值。

                (3)如果想使一个数组中全部元素值为0,可以写成:
                int a[10]={0,0,0,0,0,0,0,0,0,0};   或   int a[10]={0};
        不能写成:    int a[10]={0*10};
        这是与FORTRAN语言不同的,不能给数组整体赋初值。
                (4)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。

二、二维数组的定义和引用

1、二维数组的定义

        二维数组定义的一般形式为:

        类型说明符        数组名[常量表达式][常量表达式];

2、二维数组的引用

        二维数组元素的表示形式为:
        数组名[下标][下标]
        下标可以是整型表达式,如a[2—1][2*2-1]。但不要写成a[2,3]、a[2—1,2*2-1]形式。
        数组元素可以出现在表达式中,也可以被赋值。

3、二维数组的初始化

        (1)分行给二维数组赋初值。
        (2)可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。
        (3)可以对部分元素赋初值。

        (4)如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长
度可以不指定,但第二维的长度不能省。

三、字符数组

1、字符数组的定义

        用来存放字符数据的数组是字符数组。字符数组中的一个元素存放一个字符。
        例如:char c[10];
        c[0]='I';c[1]='';c[2]='a';c[3]='m';c[4]='';
        c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';
        以上定义了c为字符数组,包含10个元素。
        由于字符型与整型是互相通用的,因此也可以定义一个整型数组,用它存放字符数据,例如:
int c[10];
c[0]='a';  /*合法,但浪费存储空间*/

2、字符数组的初始化

        对字符数组初始化,最容易理解的方式是逐个字符赋给数组中各元素。
        (1)、如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。

        (2)、如果花括号中提供的初值个数(即字符个数)大于数组长度,则按语法错误处理。

        (3)、如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动      定为空字符(即'\o′)。
        (4)、如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根      据初值个数确定数组长度。

3、字符数组的引用

        可以引用字符数组中的一个元素,得到一个字符。

4、字符串和字符串结束标志

        在C语言中,是将字符串作为字符数组来处理的。这个字符串的实际长度与数组长度相等。

        C语言规定了一个“字符串结束标志”,以字符\o′作为标志。在遇到字符'\o′时,表示字符串结束,由它前面的字符组成字符串。
系统对字符串常量也自动加一个'\o'作为结束符。字符串作为一维数组存放在内存中。
        说明:'\o'代表ASCII码为0的字符,从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做。用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。

5、字符数组的输入输出

        字符数组的输入输出可以有两种方法。
                (1)逐个字符输入输出。用格式符“%c”输入或输出一个字符。
                (2)将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串(string)的输入输出。

注意:

        (1)输出字符不包括结束符\0'。
        (2)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。
        (3)如果数组长度大于字符串的实际长度,也只输出到遇\o′结束。
        (4)如果一个字符数组中包含一个以上'\o′,则遇第一个'\o'时输出就结束。
        (5)可以用scanf函数输入一个字符串。

        (6)前面介绍的输出字符串的方法:
        printf(”%s",c);
        实际上是这样执行的:按字符数组名c找到其数组起始地址,然后逐个输出其中的字符,直到遇\o′为止。

6、字符串处理函数

        1)、puts函数

                其一般形式为:    puts(字符数组)

                其作用是将一个字符串(以‘\n’结束的字符序列)输出到终端。

        2)、gets函数

                其一般形式:        gets(字符数组)

                其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。

        3)、strcat函数

                其一般形式:

                strcat(字符数组1,字符数组2)

                strcat是STRing CATenate(字符串连接)的缩写。其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。

说明:
         (1)字符数组1必须足够大,以便容纳连接后的新字符串。
         (2)连接前两个字符串的后面都有\o',连接时将字符串1后面的\o'取消,只在新串最后保留\o'。

4)、strcpy和strncpy函数

        其一般形式为:
        strcpy(字符数组1,字符串2)

        strcpy是STRingCoPY(字符串复制)的简写。它是“字符串复制函数”,作用是将字符串2复制到字符数组1中去。

说明:
        (1)字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。
        (2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。
        (3)如果在复制前未对str1数组赋值,则str1各字节中的内容是无法预知的,复制时将str2中的字符串和其后的\o′一起复制到字符数组1中,取代字符数组1中的前面6个字符,最后4个字符并不一定是斜杠零,而是str1中原有的最后4个字节的内容。
        (4)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。而只能用strcpy函数将一个字符串复制到另一个字符数组中去。用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。
        (5)可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去。但复制的字符个数n不应多于strl中原有的字符(不包括\o′)。

5)、strcmp函数

        其一般形式为:

        strcmp(字符串1,字符串2)
        strcmp是STRing CoMPare(字符串比较)的缩写。它的作用是比较字符串1和字符串2。

6)、strlen函数

        其一般形式为:

        strlen(字符数组)
        strlen是STRing LENgth(字符串长度)的缩写。它是测试字符串长度的函数。函数的值为字符串中的实际长度(不包括\o′在内)。

7)、strlwr函数

        其一般形式:

        strlwr(字符串)

        strlwr是STRing LoWeRcase(字符串小写)的缩写。函数的作用是将字符串中大写字母换成小写母。

8)、strupr函数

        其一般形式为:
        strupr(字符串)
        strupr是STRing UPpeRcase(字符串大写)的缩写。函数的作用是将字符串中小写字母换成大母。

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值