C语言学习数组
一.数组的定义
类型 数组名[元素个数]
int a[6];
char b[24];
double c[3];
上面的几个类型,都占多少字节内存?
• 元素数量必须是整数
• C99之前:元素数量必须是编译时刻确定的字面量
• 是一种容器(放东西的东西),特点是:
• 其中所有的元素具有相同的数据类型;
• 一旦创建,不能改变大小
• *(数组中的元素在内存中是连续依次排列的)
二.有效的下标范围
• 编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写
• 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃
• segmentation fault!
• 但是也可能运气好,没造成严重的后果
• 所以这是程序员的责任来保证程序只使⽤用有效的下标值:[0,数组的⼤大小-1]
• 循环跟数组的关系
实现一个执行10次的循环,通常是这么写:
for(i=0;i<10;i++){
......
}
#include <stdio.h> #define num 10 int main() { int s[num]; int i,sum=0; for(i=0;i<num;i++){ printf("请输入第%d个学生成绩:",i+1); scanf("%d",&s[i]); sum +=s[i]; } printf("平均分是%d\n",sum/10); return 0; }
三.数组的初始化
1.将数组中所有元素统一初始化为某个值,可以这么写:
int a[10]={0}; //将数组中所有元素初始化为0
2.如果是赋予不同的值,可以用逗号分隔开:
int a[10]={1,2,3,4,5,6,7,8,9,0};
3.还可以只给一部分赋值,那么其他元素将自动初始化为0;
int a[10]={1,2,3,4,5};
4.C99增加了一种新特性:指定初始化元素:
int a[10]={[3]=3, [5]=5, [8]=8};
#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[i]); } printf("%d\n", sizeof(a)); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!