当前位置:   article > 正文

C语言-数组(详细版)_c语言数组写法

c语言数组写法

数组

1.什么是数组,为什么需要数组

数组是由一组数据类型相同的元素组成的集合
当我们声明了数组之后,我们的编译器会根据
信息正确地创建数组

引用数组可以存储大量元素,便于定义很多个

变量,并给它一次性初始化(赋值),我们的一

维数组可以模拟直线(线性表),二维数组可以

模拟一个平面,而三维数组模拟是立体,而多维

数组可以模拟我们看不到的事物,

数组还有个局限性数组,数组下标是个固定值只

能人为去设定一个值

2.数组创建完成过程中需要注意什么?

数组的索引号永远比数组元素的位数少1,这是
因为数组索引号(下表)从0开始


数组的索引号一定要大于0,索引号里可以是常
量表达式,例如:
float a2[5*2 + 1]

数组名是是数组的首地址,因为只要我们知道首
地址,则我们就会知道这个数组里的所有元素

3.数组的分类

  • 一维数组

怎样定义一维数组

为n个变量连续分配空间

所有的变量数组类型必须相同

所有的变量所占字节大小必须相等

例如 :

int [5];定义5个为int的型变量的数组元素

有关一维数组的操作

初始化:(就是给每个元素赋值,因为不初始化刚分配的内存空间都是一些垃圾值)

格式:数组名[元素个数] = {元素集合}

例如 :int a[5] = {1,2,3,4,5};

       完全初始化

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

       不完全初始化,未被初始化的值全为0

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

       不初始化,所有元素都是垃圾值

                 Int a[5];

       清零

              Int a[5] = {0};

        错误写法:

               int [5]; //

               a [5] = {1,2,3,4,5}; //定义之后再使用就相当于使用a[5]这个元素(也没有这个元素,超出范围了)

         只有在定义数组的同时才可以整体赋值

         其他情况全部是错误,

         

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

               a[5] = 5;//错误,因为数组最大是a[4]

          数组下标是从0开始的

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

               Int b[5];

           如果要把a数组中的值全部赋给b数组

            错误写法:

                    b = a;//error

            正确写法:

                    for(i=0; i<5; i++)

                        b[5] = a[5];

如下代码为一维数组的初始化及输出

  1. # include <stdio.h>
  2. /*
  3. 一维数组的初始化和输出
  4. */
  5. int main(void)
  6. {
  7. int a[5]; //定义一维数组未初始化,里面都是垃圾值
  8. int i;
  9. scanf("%d", &a[0]);
  10. printf("a[0] = %d\n", a[0]);
  11. scanf("%d", &a[1]);
  12. printf("a[1] = %d\n", a[1]);
  13. scanf("%d", &a[2]);
  14. printf("a[2] = %d\n", a[2]);
  15. scanf("%d", &a[3]);
  16. printf("a[3] = %d\n", a[3]);
  17. scanf("%d", &a[4]);
  18. printf("a[4] = %d\n", a[4]);
  19. printf("-------------------\n");
  20. for (i=0; i<5; i++)
  21. printf("%d\n", a[i]);
  22. return 0;
  23. }

例子:

赋值

排序

求最大/最小值

倒置

  • 二维数组

int a[3][4];

总共是12个元素,可以当做一个3行4列的矩阵来处理

这12个元素的名字依次是

a[0][0] a[0][1] a[0][2] a[0][3]

a[1][0] a[1][1] a[1][2] a[1][3]

a[2][0] a[2][1] a[2][2] a[2][3]

a[i][j]:表示第i+1行,第j+1列元素

int [m][n]:最大为下标a[m-1][n-1]

3*4的矩阵

初始化

       写法1 int [2][3] = {1,2,3,4,5,6}

       写法2 int [2][3] = {

                   {1,2,3},

                   {4,5,6},

              }

输出二维数组:两个for输出,

下面代码为二维数组的初始化和输出

  1. # include <stdio.h>
  2. /*
  3. 二维数组的初始化和输出
  4. */
  5. int main(void)
  6. {
  7. int i,j;
  8. int a[2][3] = {
  9. {1,2,3},
  10. {4,5,6},
  11. };//二维数组初始化
  12. for(i=0; i<2; i++)//编译器先按行读取 从第0行开始
  13. {
  14. for(j=0; j<3; j++)//在按列读取 从第0列开始
  15. printf("%5.1d ", a[i][j]);
  16. printf("\n");
  17. }
  18. return 0;
  19. }

例子

二维数组排序

最大值、最小值

矩阵操作

       

  • 多维数组

是否存在多为数组

不存在

因为内存是线性的

N维数组可以当做每个元素数n-1维的数组的一维数组(重点记忆)

      比如二维数组

       Int [3][4];

        该数组是含有3个一维数组的数组

        只不过每个一维数组元素都可以再分成4个小元素

        Int [3][4][5];

         该数组是含有3个一维数组的数组

只不过每个一维数组元素都是4行5列的二维数组

以上是我的总结;如有不足,感谢点评

2023年6月13日17:18:25

作者:wkx

目的:学习C语言

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/538767
推荐阅读
相关标签
  

闽ICP备14008679号