zoukankan      html  css  js  c++  java
  • C语言进阶丨(七)数组的基本概念和初始化【1】

    数组的基本概念

    数组可以说是目前为止讲到的第一个真正意义上存储数据的结构。虽然前面学习的变量也能存储数据,但变量所能存储的数据很有限。不仅如此,数组和指针(后续会讲)是相辅相成的,学习数组可以为学习指针打下基础。

    那么到底什么是数组呢?顾名思义数组就是很多数的组合!那么这些数有没有什么要求呢,是不是不管什么数组合在一起都是数组呢?同一数组中存储的数必须满足以下两个条件:

    1)这些数的类型必须相同。

    2)这些数在内存中必须是连续存储的。

    换句话说,数组是在内存中连续存储的具有相同类型的一组数据的集合。它所包含的每一个数据叫做数组元素(Element),所包含的数据的个数称为数组长度(Length),例如int a[4];就定义了一个长度为4的整型数组,名字是a。

    数组中的每个元素都有一个序号,这个序号从0开始,而不是从我们熟悉的1开始,称为下标(Index)。使用数组元素时,指明下标即可,形式为:

    arrayName[index]

    arrayName 为数组名称,index 为下标。例如,a[0] 表示第0个元素,a[3] 表示第3个元素。

    数组内存是连续的

    数组是一个整体,它的内存是连续的;也就是说,数组元素之间是相互挨着的,彼此之间没有一点点缝隙。下图演示了int a[4];在内存中的存储情形:


     

    「数组内存是连续的」这一点很重要,所以我使用了一个大标题来强调。连续的内存为指针操作(通过指针来访问数组元素)和内存处理(整块内存的复制、写入等)提供了便利,这使得数组可以作为缓存(临时存储数据的一块内存)使用。大家暂时可能不理解这句话是什么意思,等后边学了指针和内存自然就明白了。

    数组的初始化

    对于数组的初始化需要注意以下几点:

    1) 可以只给部分元素赋值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:

    int a[10]={12, 19, 22 , 993, 344};

    表示只给 a[0]~a[4] 5个元素赋值,而后面 5 个元素自动初始化为 0。

    当赋值的元素少于数组总体元素的时候,剩余的元素自动初始化为 0:

    对于short、int、long,就是整数 0;

    对于char,就是字符 '';

    对于float、double,就是小数 0.0。

    我们可以通过下面的形式将数组的所有元素初始化为 0:

    int nums[10] = {0};

    char str[10] = {0};

    float scores[10] = {0.0};

    由于剩余的元素会自动初始化为 0,所以只需要给第 0 个元素赋值为 0 即可。

    2) 只能给元素逐个赋值,不能给数组整体赋值。例如给 10 个元素全部赋值为 1,只能写作:

    int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};

    而不能写作:

    int a[10] = 1;

    3) 如给全部元素赋值,那么在定义数组时可以不给出数组长度。例如:

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

    等价于

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

    最后,我们借助数组来输出一个 4×4 的矩阵:

    #include<stdio.h>

    intmain()

    {

    inta[4]={20,345,700,22};

    intb[4]={56720,9999,20098,2};

    intc[4]={233,205,1,6666};

    intd[4]={34,0,23,23006783};

    printf("%-9d %-9d %-9d %-9d ",a[0],a[1],a[2],a[3]);

    printf("%-9d %-9d %-9d %-9d ",b[0],b[1],b[2],b[3]);

    printf("%-9d %-9d %-9d %-9d ",c[0],c[1],c[2],c[3]);

    printf("%-9d %-9d %-9d %-9d ",d[0],d[1],d[2],d[3]);

    return0;

    }

    访问数组元素

    数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如:

    double salary = balance[9];

    上面的语句将把数组中第 10 个元素的值赋给 salary 变量。下面的实例使用了上述的三个概念,即,声明数组、数组赋值、访问数组:

    实例

    #include <stdio.h> int main (){  int n[ 10 ]; /* n 是一个包含 10 个整数的数组 */  int i,j;

      /* 初始化数组元素 */       

      for ( i = 0; i < 10; i++ )  {      n[ i ] = i + 100; /* 设置元素 i 为 i + 100 */  } 

      /* 输出数组中每个元素的值 */  for (j = 0; j < 10; j++ )  {      printf("Element[%d] = %d ", j, n[j] );

      }

      return 0;}

    当上面的代码被编译和执行时,它会产生下列结果:

     C语言中数组详解

    在 C 中,数组是非常重要的,我们需要了解更多有关数组的细节。下面列出了 C 程序员必须清楚的一些与数组相关的重要概念:

     关于数组的基本认识就分享到这里了,关注小编,每天分享更多精彩内容哦!

    最后,特别推荐一个分享C/C++和算法的优质内容,学习交流,技术探讨,面试指导,简历修改...还有超多源码素材等学习资料,零基础的视频等着你!

    还没关注的小伙伴,可以长按关注一下:


     
  • 相关阅读:
    java将文件夹md5为名的图片与数据库查询对应md5后导入相应图片到某分类下
    java 导入图片时忘了导入诊断报告,查询报告并将缺失的报告插入对应分类图片中
    安装nginx
    python,opencv,8位图转24位图
    python 笔记
    python,opencv图像增强
    问卷星的使用教程
    考研数据结构复习随笔-基本概念(一)
    按字寻址 按字节寻址
    在数据结构中用顺序栈解决括号匹配问题
  • 原文地址:https://www.cnblogs.com/mu-ge/p/14488572.html
Copyright © 2011-2022 走看看