各位同学,你觉得你数组学会了吗?不妨看看下面的问题,你能看一眼程序就回答上来吗?
引子:观察下面的程序,这个程序有安全隐患吗?
#include<stdio.h>
int main() {
int x = 0;
double sum = 0;
int number[100] = { 0 };
int cnt = 0;
scanf("%d", &x);
while (x != -1) {
number[cnt] = x;
sum += x;
cnt++;
scanf("%d", &x);
}
if (cnt > 0) {
int i = 0;
double average = sum / cnt;
for (i = 0; i < cnt; i++) {
if (number[i] > average)
printf("number %d: %d\n", i, number[i]);
}
}
}
答案是有的
while
循环种没有限制cnt
有可能导致 数组越界!
不能快速找到错误和找不到错误其实是一样的,因为不能快速找到这个错误说明你没有深刻的理解数组。这种基础的概念如果没有渗透到你的脑中,并不能说自己学好了数组吧!我学了一学期C,课设1000行代码都是自己独立完成的。依然没有立刻看出这个问题来,我也是自愧没有学好啊!
数组特性与一个注意
1.数组是一种容器(放东西的东西)
2.基本特点是:
- 其中所有元素具有相同的数据类型
- 一旦创建,不能改变大小
- 在内存中连续依次排列
3.注意:
数组作为函数参数时,往往必须再用另一