『7x24小时有问必答』

一、数组是什么?

数组就是“一排相同类型的储物柜”  ️
想象一下:
普通变量 = 一个单独的储物箱,只能放一件东西
数组 = 一整排编号的储物柜,每个小柜子(元素)都能放东西,而且所有柜子都放同一种东西
int  score1, score2, score3, score4, score5;   //  5个变量,麻烦!

int  scores[5];   //  一个数组,搞定!能存5个整数

二、数组的核心特性

数组有三个最重要的特点:
类型相同
:所有元素必须是同一数据类型(全是int、全是float等)
连续存储
:元素在内存中一个挨着一个,没有空隙
长度固定
:一旦定义,大小就不能改变

三、如何定义数组?

语法很简单:类型 数组名[元素个数];
int  a[5];            // 存放5个整数的数组

float  b[10];        // 存放10个小数的数组

char  c[20];         // 存放20个字符的数组
注意事项:数组长度必须是常量,不能是变量(C99标准后支持变长数组,但初学者先记住用常量)。

四、下标从0开始,千万别忘!

数组元素通过**下标(索引)**来访问,下标从0开始,不是从1开始!
int  a[5];   // 5个元素,分别是 a[0], a[1], a[2], a[3], a
最高下标是  数组长度 - 1,所以a[5]是越界的,访问它会出大问题!

五、数组的三种初始化方式

方式1:完全初始化(给所有元素赋值)

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

// a[0]=1, a[1]=2, a[2]=3, a[3]=4, a[4]=5

方式2:部分初始化(剩下的自动补0)

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

// a[0]=1, a[1]=2, a[2]=0, a[3]=0, a[4]=0
重要区别:如果完全不初始化,元素的值是随机的垃圾值!

方式3:省略长度(编译器自动计算)

int  a[] = {1,  2,  3,  4,  5};   // 自动推断长度为5

六、数组的访问和修改

int  a[5] = {10,  20,  30,  40,  50};

// 访问元素

printf("%d", a[1](@ref);   // 输出10

printf("%d", a[11](@ref);   // 输出30

// 修改元素

a[1] =  25;   // 现在a[1]变成了25

// 用循环批量处理

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

printf("%d ", a);   // 输出所有元素

}
关键点:数组不能整体操作,只能逐个操作每个元素。

七、计算数组长度(重要技巧)

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

int  len =  sizeof(a) /  sizeof(a[1](@ref);   // 总字节 ÷ 单个元素字节 = 元素个数

printf("%d", len);   // 输出5
这是一个非常常用的技巧,即使数组长度变了,代码也不用改!

八、新手最容易踩的3个坑

坑1:数组越界

int  a[5];

a[5] =  100;   //  大错!有效下标是0~4,a[5]越界了!
C语言不会自动检查数组是否越界,越界可能让程序崩溃,也可能偷偷修改其他变量的值,很难排查!

坑2:不给数组初始化就使用

int  a[5];

printf("%d", a[1]);   //  输出随机垃圾值!

坑3:定义后企图用花括号批量赋值

int  a[5];

a = {1,  2,  3,  4,  5};   //  编译错误!只能在定义时这样用

// 正确做法是逐个赋值或用循环

九、一个完整的例子

#include<stdio.h>

int  main()  {

// 定义并初始化数组

int  scores[5] = {85,  92,  78,  90,  88};

// 计算数组长度

int  len =  sizeof(scores) /  sizeof(scores[1](@ref);

// 计算总分

int  sum =  0;

for(int  i =  0; i < len; i++) {

            sum += scores;

      }

printf("总分:%d\n", sum);

printf("平均分:%.1f\n", (float)sum / len);

return0;

}

十、一句话总结

数组就是一组类型相同、连续存储、通过下标(从0开始)访问的数据集合。用循环配合数组,可以高效地批量处理大量数据。
记住:下标从0开始,千万别越界!多用sizeof(arr)/sizeof(arr[1])计算长度,养成好习惯!
</stdio.h>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码