06、C语言——数组

数组

一、数组的基础知识

   1、同一数组中的所有元素都属于同一种数据类型(int char float),数组元素用数组名和相应的下标来确定

   2、一个数组元素其实就是一个变量(可以称为带下标的变量)

   3、一批类型相同的数据的集合

二、一维数组

   1、一维数组的定义格式

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

      注意:       

        1)常量表达式的值表示所定义数组共有多少个元素(数组长度或数组的大小或数组元素的个数)      

        2)定义数组时方括号中的表达式不能含有变量。另外表达式的值必须要大于零且为正整数         

        3) 常量表达式是由加减乘除所连接的表达式,不能是变量

        4)注意:

        int N = 9;
        int a[N];            此时的N是变量,此书写格式错误
        #define N 9         int a[N]; 此时的N是符号常量,此写法是对的

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

      数组名[下标]

      注意:

        1)C语言中不能对数组进行整体引用只能单独引用其中的元素。引用时下标可以是表达式

        2)数组必须先定义后使用

        3)数组不能整体使用,必须使用其元素

        4)数组元素的下标值在(0~n-1之间)

   3、一维数组的初始化格式 

      类型名 数组名[常量表达式]={初值1,初值2,...};

      注意:
        1)定义一维数组时可以讲个元素的初始值依次放在一对{}中赋给数组(必须用{}将初值括起来,且初值之间用一个逗号分隔)

        2)赋的值多则出错;少则补0

        3)定义赋初值的个数等于数组长度,则数组长度可以省略

        4)当一个值都不赋,则是随机值

        5)只能在定义数组的同时用{}给数组元素整体赋值

三、二维数组

    1、二维数组的定义格式

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

      注意:

        1)定义数组时方括号的表达式不能含有变量,且表达式的值必须是大于0的正整数

        2)在内存中二维数组元素的存放也是连续的先行后列原则

    2、二维数组元素的引用

      数组名[行下标][列下标]

      注意:

        1)不能整体引用,只能引用其中的元素

        2)引用二维数组元素时,必须有行下标和列下标两个下标。从0开始依次加1.

    3、二维数组的初始化

      方法1:将初值依序放在一对{}中,与一维数组初始化格式相同

      方法2:定义二维数组同时,按行初始化每一行初值均用一对{}括起来,采用嵌套的{}格式。

      注意:

        1)定义二维数组的同时给数组初始化,则可以省略行数,但列数不能省略

        2)int a[][3];此语句错误,给数组初始化的时候可以将二维数组的行数省略

        3)初始化中的数据是按照列下标的个数进行划分——按列划分

四、字符数组

    1、字符数组的初始化——与其它类型数组的初始化方式一样,只是其初始值是字符

      char s[] = {'a','b','c','d'};

    2、字符串

        1)字符串常量后有一个‘’

          如:“abcd” 由5个字符组成;“”等价与“”,是一个空字符串;''是字符型,""空串是由一个''字符型组成

          注:因为字符串最后都有一个字符串结束符(‘’),所以用字符数组来存放字符串是一定要有一个元素存放结束符''

        2)用字符串给一字符数组进行初始化有三种情况:

          方法1:char a[]="abcd";

          方法2:char a[]={"abcd"};

          方法3: char a[]={'a','b','c','d',''} 

          注:只有双引号出现的时候才能可以将花括号省略    

    3、字符串使用

        1)字符串存储(赋值)四种方法

          方法1:scanf();键盘输入

            char a[10];
            scanf("%s",a);
            注意:用%s格式输入时,遇到空格符或回车符则自动结束输入

          方法1:printf();输出      

            char s[10];
            scanf("%s",s);
            printf("%s",s);
            注意:输出时则从当前地址开始直到遇到结束符''为止

          方法2:gets()键盘输入

            #include<stdio.h>
            gets(字符数组或字符串常量)
            功能:读取一个字符串赋给字符数组
            注意:
              1)用该函数输入字符时,只有遇到回车符系统才结束读取字符
              2)不论是用%s还是gets()在输入时均不需要输入双引号,若输入时用来双引号则双引号也作为字符串的有效字符、

          方法2:puts()输出

            功能:在屏幕上输出字符数组中的字符

            注意:用该函数输出与用%s格式输出一样,只是该函数将''转成' '输出

          方法3:字符串初始化

            char a[]="abcd";

            char a[]={"abcd"};            char a[]={'a','b','c','d',''};


        2)字符串函数
            第一个函数:strcat()

             #include<string.h>
             strcat(字符数组1,字符数组2)
             功能:“连接”
                第一个''开始连入
                第二个串的''也连入

            第二个函数:strcpy()

            #include<string.h>
            strcpy(字符数组1,字符数组2)
            功能:将字符数组2中的字符串替换到字符数组1中。函数值为字符数组1的首地址
                  第一个字符开始复制    
                  第二个字符的''也复制过去            

            第三个函数:strcmp()

             #include<string.h>
            strcmp(字符数组1,字符数组2)
            功能:函数返回值相同位置不同字符的ASCII码差值
                  返回的是一个数值

            第四个函数:strlen()

            #include<string.h>
            strlen(字符数组)
            功能:求出字符数组的实际长度(不包括结束符)

  

原文地址:https://www.cnblogs.com/wxt19941024/p/6937265.html