数组|学习笔记

简介: 快速学习数组

开发者学堂课程【你的第一门 C 语言课数组】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5467


数组


内容介绍:

一、数组的定义

二、 访问数组元素

三、 循环跟数组的关系

四、 数组的初始化

 

一、数组的定义

  • 类型 数组名[元素个数

int a[6];

char b[24];

double c[3];]

注意:数组不能动态定义

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

图片65.png


二、 访问数组元素

  •  数组名[下标]

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

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

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

  • 注意:

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

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

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


三、循环跟数组的关系

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

int a[10];

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

{

a[i]= i;

}

  • 案例

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

#include

#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

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

int a[10]={1,2,3,4,5,6,7,8,9,0};

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

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

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

  • l 举例1:

#include

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

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

  • l 举例3:

#include

int main()

{

int a[10]={1,2,3,4,5,6,7,8,9,0}

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

int main()

{

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

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,3,4,5,6,7,8,9,0};

  • 举例1:

#include

int main()

{

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

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

  •  l 举例2:

#include

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

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]};

相关文章
|
数据采集 运维 数据挖掘
一文速学-Pandas异常值检测及处理操作各类方法详解+代码展示
一文速学-Pandas异常值检测及处理操作各类方法详解+代码展示
1695 0
一文速学-Pandas异常值检测及处理操作各类方法详解+代码展示
|
Linux 网络安全 Python
linux后台运行命令screen的使用
linux后台运行命令screen的使用
890 2
linux后台运行命令screen的使用
|
存储 自然语言处理 数据库
Elasticsearch倒排索引
【11月更文挑战第2天】
236 1
|
安全 Linux 数据安全/隐私保护
忘记CentOS 7.7 root密码?别慌,一招教你轻松解决!
对于系统管理员来说,密码是保护系统安全的第一道防线。但在实际操作中,忘记密码的情况难以避免。如果忘记了CentOS 7.7的root密码,可能会无法执行一些需要root权限的重要操作,因此学会如何在忘记密码后重置变得尤为重要。
忘记CentOS 7.7 root密码?别慌,一招教你轻松解决!
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
618 0
|
XML JSON Java
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
【Java用法】@RequestParam、@RequestBody、@ResponseBody和@PathVariable的使用与区别
618 0
|
JavaScript Java 测试技术
基于SpringBoot音乐网站与分享平台详细设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot音乐网站与分享平台详细设计和实现(源码+LW+调试文档+讲解等)
|
存储 NoSQL 分布式数据库
【HBase入门与实战】一文搞懂HBase!
该文档介绍了HBase,一种高吞吐量的NoSQL数据库,适合处理大规模数据。HBase具备快速读写、列式存储和天然支持集群部署的特点,常用于高并发场景。NoSQL与关系型数据库的主要区别在于数据模型、查询语言和可伸缩性。HBase的物理架构包括Client、Zookeeper、HMaster和RegionServer,其中RegionServer管理数据存储。HBase的读写流程利用MemStore和Bloom Filter提高效率。此外,文档还提到了HBase的应用,如时间序列数据、消息传递和内容服务。
3009 1
【HBase入门与实战】一文搞懂HBase!
|
JavaScript 前端开发 测试技术
Vue超详细学习笔记
Vue超详细学习笔记
1371 0