目录
  • 1.基础知识
  • 2.数组的分类
    • 2.1按元素类型分类
    • 2.2按维数分类
  • 3.数组定义和初始化
    • 3.1 一维数组
    • 3.2 二维数组
  • 4.数组元素的引用方法
    • 5.字符数组的定义

      1.基础知识

      • C语言中使用数组表示多个连续的同类型的存储位置
      • 使用数组表示多个连续存储位置的时候只需要一个名字,这个名字代表所有这些存储位置的整体
      • 每一个存储位置有一个自己的编号,最前边的存储位置的编号是0,向后依次递增,最后一个存储位置的编号是个数减一,这个编号叫做下标
      • 决不可以使用超过范围的下标
      • 使用名称和下标就可以表示这组存储位置中的某一个

      2.数组的分类

      2.1按元素类型分类

      • 字符数组:若干个字符变量的集合
      • 短整型数组
      • 整型数组
      • 长整型数组
      • 浮点型数组
      • 指针数组
      • 结构体数组

      2.2按维数分类

      • 一维数组
      • 二维数组
      • 多维数组

      3.数组定义和初始化

      3.1 一维数组

      格式: 数据类型 数组名[数组元素的个数];

      数组名和元素个数中间没有空格

      int a[10];定义了一个名为a的数组,每个元素都是int类型,一共有10个元素 数组元素的个数在定义的时候也可以不写,但是需要初始化,如下例的b[ ]

      #include<stdio.h>
      int main(int argc,char *argv[]){
      		int a[10];
      		int b[] = {10,20,30};
      		printf("sizeof(a) = %d\n",sizeof(a));
      		return 0;
      }
      

      初始化

      全部初始化 int a[5] = {1,2,3,4,5};

      部分初始化,赋值不够的后面补0 int a[5] = 2;

      #include<stdio.h>
      int main(){
          // 如果不初始化,直接使用为随机值
          int a[4] = {2,3,6,5};
          printf("数组a的元素为:%d,%d,%d,%d\n",a[0],a[1],a[2],a[3]);       
          int b[4] = {2,5};
          printf("数组b的元素为:%d,%d,%d,%d\n",b[0],b[1],b[2],b[3]);         
      }
      

      C语言从基础到进阶全面讲解数组

      3.2 二维数组

      格式: 数据类型 数组名[行的个数][列的个数]

      例如 int a[2][4]

      解释:名为a的二维数组,每个元素都是int类型,包含两行四列元素,一共有8个元素

      二维数组也是连续开辟空间,访问元素是行和列都是从0开始

      分别是 a[0][0] , a[0][1]…a[1][3]

      注意:二维数组的行数可以省略,列数不能省略,在初始化的时候按照如下操作

      系统会根据列数自动指定行数

      #include<stdio.h>
      int main(){
          int a[2][4];
          printf("sizeof(a)=%ld %ld\n",sizeof(a),2 * 4 *sizeof(int));
          // 省略行标:
          int b[][4] = {1,2,3,4,5};
          printf("sizeof(b)= %ld\n",sizeof(b));
          return 0;
      }
      

      C语言从基础到进阶全面讲解数组

      初始化

      逐行初始化:

      #include<stdio.h>
      int main(){
          int a[2][3] = {{1,2,3},{6,6,6}};
          int i = 0,j = 0;
          for(i = 0;i < 2;i++){
              for(j = 0;j < 3;j++){
                  printf("%d,",a[i][j]);
              }
              printf("\n");
          }
          return 0;
      }

      C语言从基础到进阶全面讲解数组

      部分初始化:

      #include<stdio.h>
      int main(){
          int a[2][3] = {{1,2},{6}};
          int i = 0,j = 0;
          for(i = 0;i < 2;i++){
              for(j = 0;j < 3;j++){
                  printf("%d,",a[i][j]);
              }
              printf("\n");
          }
          return 0;
      }
      

      C语言从基础到进阶全面讲解数组

      全局初始化:

      #include<stdio.h>
      int main(){
          int a[2][3] = {1,2,3,4,5,6};
          int i = 0,j = 0;
          for(i = 0;i < 2;i++){
              for(j = 0;j < 3;j++){
                  printf("%d,",a[i][j]);
              }
              printf("\n");
          }
          return 0;
      }
      

      C语言从基础到进阶全面讲解数组

      4.数组元素的引用方法

      一维数组:数组名[下标]

      二维数组:数组名[行标][列标]

      上例中已经通过a[ i ][ j ]进行引用,简单易懂

      5.字符数组的定义

      #include<stdio.h>
      int main(){
          // 用字符的方式赋值
          char c1[] = {'c',' ','p','i','g'};
          printf("c1数组为:\n");
          for(int i = 0;i < 5;i++){
              printf("'%c',",c1[i]);
          }
          printf("\n");
          // 用字符串的方式赋值,多占1个字节,用于存放结束标志 ‘\0'
          char c2[] = "c pig";
          for(int j = 0;j < 6;j++){
              printf("'%c',",c2[j]);
          }
          // 二维数组  字符赋值
          char a[][5] = {
              {'a','b','v','g','y'},
              {'a','b','v','g','y'}
          };
          // 字符串赋值,知道为什么是6吗? 因为多了一个 '\0'
          char b[][6] = {"hello","world"};
          // 二维数组的元素读者可自行打印练习
          return 0;
      }

      C语言从基础到进阶全面讲解数组

      练习:定义一个字符数组,通过scanf函数输入字符串并输出结果

      #include<stdio.h>
      int main(){
          //通过赋值”“这样的方式可以清除字符数组中的垃圾字符,让每一个元素都是 \0
          char ch[32] = "";
          printf("请输入一个字符串:\n");
          scanf("%s",ch);   //数组名就是当前数组的首地址
          printf("ch = %s\n",ch);
          return 0;
      }
      

      C语言从基础到进阶全面讲解数组

      声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。