zoukankan      html  css  js  c++  java
  • 7.数组

    数组

    一维数组

    • 定义

      类型名 数组名[常量表达式] /* int a[10] */
      

      说明:

      1. 类型名是数组各元素的类型。
      2. []是数组的标志。
      3. 常量表达式表示数组元素的个数,即数组的长度。
      4. C语言规定数组的下标从0开始。
      5. C语言不允许对数组的大小进行动态定义。
      6. 数组一经定义就在内存中分配一块连续的存储空间,一维数组是按下标由小到大的顺序存放的。
    • 引用

      数组名[下标]  /* a[0] */
      

      说明:

      1. 下标可以是整型常量或是整型表达式。
      2. 数组只能逐个元素引用,不能用数组名一次引用整个数组。数组名代表数组在内存分配的存储空间的首地址。
      3. 数组带下标后就是一个具体的元素,相当于一个简单变量,也称“下标变量”。
    • 初始化

      在定义数组时,可以同时给数组元素赋初值。

      1. 给全部元素赋初值:

        int a[5]={1,2,3,4,5}
        
      2. 给部分元素赋初值:

        int a[10]={1,2,3,4,5}  /* 初值个数少于数组大小时,自动给后面的元素补0 */
        

      说明:

      1. 赋初值的个数不能大于数组的大小。
      2. 当赋初值的个数与所定义数组的大小相等时,定义时可以省略数组的大小。

    二维数组

    二维数组在逻辑上相当于一个矩阵或一个具有行和列的表格。

    • 定义

      类型名 数组名[常量表达式1][常量表达式2] /* int a[3][4] */
      

      说明:

      1. 常量表达式1称为矩阵的行数,常量表达式2称为矩阵的列数。二维数组的个数即为行数与列数的乘积。
      2. 二维数组在内存中同样占用一块连续的存储空间,并采用“按行存放”的方式,即先顺序存放第0行的各元素,再顺序存放第n行的各元素。
      3. C语言允许使用多维数组。
    • 引用

      数组名[下标1][下标2] /* a[0][1] */
      

      若要引用二维数组的全部元素,通常使用双重循环来配合:

      int a[3][4],i,j;
      for(i=0;i<3;i++)
        for(j=0;j<4;j++)
          scanf("%d",&a[i][j])
      
    • 初始化

      1. 按行书写的方式给二维数组的全部元素赋初值:

        int a[2][3]={{0,0,0},{1,1,1}};
        
      2. 顺序书写的方式给二维数组的全部元素赋初值:

        int a[2][3]={1,2,3,4,5,6}
        
      3. 给每行的部分元素赋初值:

        int a[2][3]={{0,0},{1,1}};
        
      4. 给部分行的部分元素赋初值:

        int a[4][3]={{1,2},{3,4}} 
        
      5. 给部分元素赋初值:

        int a[4][3]={1,2,3,4,5}
        

      说明:

      1. 对于二维数组,也可以通过赋初值的个数来定义数组的大小。

      2. 采用顺序书写赋初值时,第一维的大小按以下规定:

        当初值的个数能被第二维的大小除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的大小除尽时,所得商数+1就是第一维的大小。

        int c[][3]={1,2,3,4,5,6} /* =int c[2][3] */
        

    用字符数组来存放字符串

    C语言提供了字符串常量,系统在存储字符串时自动在其末尾添加转义字符‘‘来作为字符串结束的标志。’’的ASCII代码值为0,它占用存储空间,但不计入字符串的实际长度。

    C语言没有提供字符串变量,一般情况下,我们将字符串存于字符数组变量中进行处理。

    • 将字符串存于字符数组的方法

      1. 通过赋值运算将字符逐个赋给各元素后,再在其末尾加入‘‘:

        char c[6];
        c[0]='h';c[1]='e';c[2]='l';c[3]='l';c[4]='o';c[5]='';
        /* 或 */
        char c[6]={'h','e','l','l','o'}; /* 末尾自动补0 */
        
      2. 通过给字符数组输入字符并在最后加入'':

        char c[6];
        int i;
        for(i=0;i<5;i++)
          scanf("%c",&c[i]);
        c[i]=''
        
      3. 赋初值时直接赋字符串:

        char c[6]={"hello"};
        char c[6]="hello";
        char c[]="hello"
        
    • 字符数组的输入和输出

      1. 在scanf()函数和printf()函数中使用格式说明符%c,来进行逐个输入或输出。
      2. 在scanf()函数和printf()函数中使用格式说明符%s,来进行字符串整体的输入和输出。

      说明:

      1. 用%s格式符输入字符串时,空格和回车都作为输入数据的分隔符而不被输入。若输入字符串中包含空格,可以采用gets()函数。
      2. 输入的字符串应短于字符数组的定义长度,若输入字符串的长度超出字符数组所能容纳的字符个数时,虽然系统不报错,但下标越界,应避免。
      3. 当输入项时一数组元素的地址时,输入数据将从这一元素开始存放,并且要有足够的存储单元存放所属的字符及字符床结束标志。
    • get()、puts()函数,从终端进行字符串的输入和输出

      • get()函数的调用形式

        get(str_addr);
        

        说明:

        1. str_adr时存放输入字符串的起始地址,他可以是字符数组名或字符数组元素的地址。
        2. gets()函数用来从终端读入字符串(包含空格符),直到读入一个换行符为止。
      • put()行数的调用形式

        puts(str_adr);
        

        调用puts()函数时,将从字符串起始地址开始依次输出存储单元中的字符,直到遇到''时结束,并自动输出一个换行符。

    • 用于字符串处理的函数

      1. 字符串拷贝函数:strcpy()
      2. 字符串连接函数:strcat()
      3. 字符串比较函数:strcmp()
      4. 字符串求长度函数:strlen()
      5. 字符串大小写转换函数:strlwr()、strupr()
  • 相关阅读:
    拉格朗日乘子基本概念
    "模式识别与机器学习"读书笔记——2.3(2)
    [raw]人工智能方向调查
    Android !No Launcher activity found!错误
    [raw]ubuntu在当前目录右键打开终端
    Android, 读取大型文件报错
    Blueman Ubuntu的蓝牙管理器
    VMware下Ubuntu8.04 方向键失效的解决方法
    无线中间人攻击初探
    【经验】短接 Flash 解决二次量产金士顿 DTI G2 4GB U盘(群联PS225139)问题
  • 原文地址:https://www.cnblogs.com/xqisui/p/13799538.html
Copyright © 2011-2022 走看看