ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言进阶丨(七)数组的基本概念和初始化【1】

2021-03-05 21:33:59  阅读:172  来源: 互联网

标签:%- 初始化 进阶 10 int 元素 9d C语言 数组


数组的基本概念

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

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

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,就是字符 '\0';

对于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\n",a[0],a[1],a[2],a[3]);

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

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

printf("%-9d %-9d %-9d %-9d\n",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\n", j, n[j] );

  }

  return 0;}

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

 

 C语言中数组详解

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

 

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

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

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


 

标签:%-,初始化,进阶,10,int,元素,9d,C语言,数组
来源: https://www.cnblogs.com/mu-ge/p/14488572.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有