数组

简介: 一、数组的定义二、访问数组元素三、循环跟数组的关系四、数组的初始化

数组


内容介绍:

一、数组的定义

二、访问数组元素

三、循环跟数组的关系

四、数组的初始化

 

 

一、数组的定义

  • 类型 数组名[元素个数

int a[6];

char b[24];

double c[3];]

注意:数组不能动态定义


  • 上边几个类型,都占用了多少字节的内存?

image.png

 

二、 访问数组元素

  • 数组名[下标]

a[0]; //访问a数组中的第一个元素

b[1];//访问b数组中的第二个元素

c[5];//访问c数组中的第六个元素

 

  • 注意:

int a[5] ;//创建一个具有五个元素的数组

a[0]; //访问第一个元素的下标是0,不是1

a[5]; //报错,因为第五个元素的下标是a[4]

 

 

循环跟数组的关系

  • 这是因为我们常常需要使用循环来访问数组:

int a[10];

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

{

a[i]= i;

}

 

  • 案例:

举个例子,我们尝试用数组存放班里10位同学的数学成绩,并计算出平均数。

#include <stdio.h>

#define NUM 10

int main( )

{

int s [NUM] ;

int i,sum=0;

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

{

printf("请输入第%i位同学的成绩:”i+1);

scanf("%d"&s[i]) ;

sum +=s[i] ;

}

//浮点型

printf("成绩录入完毕,该次考试的平均分是:%.2f\n", (double)sum / NUM ;|

return 0 ;

}

 

运行:gcc test1.c && ./a. out

结果:

请输入第1位同学的成绩:80

请输入第2位同学的成绩:90

请输入第3位同学的成绩: 70

请输入第4位同学的成绩: 66

请输入第5位同学的成绩:77

请输入第6位同学的成绩: 54

请输入第7位同学的成绩:67

请输入第8位同学的成绩:89

请输入第9位同学的成绩:65

请输入第10位同学的成绩: 99

成绩录入完毕,该次考试的平均分是:75.70

 

 

四、数组的初始化


  • 将数组中所有元素初始化为0,可以这么写:

int a[10] = {0}; //事实上这里只是将第一个元素赋值为0


  • 如果是赋予不同的值,那么用逗号分隔开即可:

int a[10]={1,23,4,567,8,90};


  • 你还可以只给一部分元素赋值,未被赋值的元素自动初始化为0:

int a[10]={1,23,4,56};

//表示为前边6个元素赋值,后边4个元素系统自动初始化为0


  • 举例1

#include <stdio.h>

int main()

{

int a[10]={0}

int i;

 

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

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

0

0

0

0

0

0

0

0

 

  • 举例2

#include <stdio.h>

int main()

{

int a[10]

int i;

 

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

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

134518360

1075976712

134513721

8810972

134513196

8821984

8818676

134513696

134513424

134513707

 

  • 举例3

#include <stdio.h>

int main()

{

int a[10]={1234567890}

int i;

 

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

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test1.c && ./a. out

结果:

1

2

3

4

5

6

7

8

9

1

0

 

  • 举例4

#include <stdio.h>

int main()

{

int a[10]={12345}

int i;

 

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

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test1.c && ./a. out

结果:

1

2

3

4

5

0

0

0

0

0

 

  • 有时候还可以偷懒,可以只给出各个元素的值,而不指定数组的长度(因为编译器会根据值的个数自动判断数组的长度):

int a[] = {1,2,34,567,890};


  • 举例1

#include <stdio.h>

int main()

{

int a[]={12345}

int i;

 

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

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

1

2

3

4

5

5

13451375

0

-1079398472

10218806

 

  • 举例2

#include <stdio.h>

int main()

{

int a[10]={[3]=3,[5]=5.[8]=8};

int i;

 

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

{

printf(“%d\n”, a[1])

}

return 0;

}

运行:gcc test2.c && ./a. out

结果:

0

0

0

3

0

5

0

0

8

0

 

  • 举例3

#include <stdio.h>

int main()

{

int a[10]={[3]=3,[5]=5.[8]=8};

int i;

 

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

{

printf(“%d\n”, a[1])

}

printf(“%d\n”,sizeof(a));

return 0;

}

运行:gcc test2.c && ./a. out

结果:

0

0

0

3

0

5

0

0

8

0

40

 

 

  • C99增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定元素进行初始化赋值,而未被赋值的元素自动初始化为0:

int a[10] = {[3] = 3,[5]=5,[8] = [8]};

相关文章
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)上
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)上
808 0
蓝牙核心规范(V5.2)7.1-深入详解之L2CAP(2)上
|
Android开发
你要了解的USB接口知识总结
最近项目中有设计到USB接口,把一些常用的USB名词、常识以及关系总结一下。
2067 0
|
算法 小程序 API
2025年最新蓝牙Beacon技术深度剖析与停车场定位导航实战指南
本文通过分析蓝牙Beacon技术工作原理、停车场定位导航硬件部署、蓝牙信号平滑处理等,旨在剖析蓝牙Beacon技术在停车场定位导航系统中的实际应用与优势,迅速定位空闲车位,提供反向寻车功能,并优化停车场管理流程,有效解决大型停车场中的找车位难题。如需获取详细解决方案可前往文章最下方获取,如有项目需求及技术合作可私信作者。
1345 0
|
网络协议 物联网 芯片
三张图带你入门蓝牙规范
蓝牙自从2001年发布以来,从经典蓝牙发展到了BLE蓝牙,又于2017年引入了蓝牙mesh技术,核心规范版本就于2019年年底升级到了最新的5.2版本,很多同学对蓝牙很有兴趣,但也被会被蓝牙技术里繁多的概念搞迷糊,希望通过这篇文章带大家对蓝牙技术规范有一个基本的了解。本文的面向读者是对网络技术有一定了解但对蓝牙技术不熟悉的同学。
三张图带你入门蓝牙规范
|
安全 Linux 网络安全
Linux 基础知识 | 图谱精选课程
小白想要入手Linux,从这里开始
Linux 基础知识 | 图谱精选课程
|
Rust 物联网 人机交互
一文看懂蓝牙在物联网中的应用场景
蓝牙作为一项发明于上世纪的近距离无线通信技术,在手机,电脑领域已经有了充分地基础,那么这项技术在物联网领域又会有哪些应用场景呢?
一文看懂蓝牙在物联网中的应用场景
|
自然语言处理 IDE JavaScript
VSCode 语言插件开发入门
VSCode 为何可以支持如此之多的编程语言?如何为一门新语言编写语言插件?又有哪些语言特性可以被应用呢?本次分享为大家介绍了 VSCode 提供的编程语言相关的能力,详细讲解了代码高亮原理、languages.* API、Language Server Protocol 等内容。
VSCode 语言插件开发入门
|
编解码 Shell
蓝牙协议之AVDTP
蓝牙协议之AVDTP
1289 0
蓝牙协议之AVDTP

热门文章

最新文章