【C语言】数组:一口气声明 100 个变量,就这么简单

【C语言】数组:一口气声明 100 个变量,就这么简单
假设你要存 5 个学生的成绩不用数组的话你得写int score0, score1, score2, score3, score4;5 个还好100 个呢数组就是解决这个问题的。声明一个数组int score[5];这行代码声明了一个能存 5 个int的数组名字叫score。方括号里的数字是元素个数不是最大下标。这点很多人一开始搞混。下标从 0 开始数组的第一个元素是score[0]最后一个是score[4]不是score[5]。#include stdio.h int main() { int score[5]; int i; score[0] 90; score[1] 85; score[2] 78; score[3] 92; score[4] 66; for (i 0; i 5; i) { printf(score[%d] %d\n, i, score[i]); } return 0; }在 VS2013 里按 F5输出从score[0]到score[4]依次打印。声明时直接赋初值int score[5] {90, 85, 78, 92, 66};花括号里按顺序给值比一行行赋值省事。如果花括号里的值比元素个数少剩下的自动补 0int score[5] {90, 85}; /* score[2]、score[3]、score[4] 都是 0 */VS2013 的限制数组长度必须是常量VS2013 不支持 C99 的可变长数组VLA数组长度必须是编译时就确定的常量不能是变量int n 5; int score[n]; /* VS2013 报错error C2057 */要用固定长度或者用#define定义一个常量#define MAX 5 int score[MAX]; /* 正确 */最容易踩的坑越界访问int score[5]; score[5] 100; /* 越界合法下标是 0~4 */score[5]已经超出数组边界了VS2013 编译不报错但运行时行为不确定——可能改掉其他变量的值可能直接崩溃也可能正常运行但结果是错的。这是 C 语言里最难调的一类 bug因为出问题的地方往往不是越界那行而是后面的某行代码。自己试一下声明一个长度为 10 的int数组用for循环把 1 到 10 存进去再用另一个for循环打印出来。在 VS2013 里验证输出。