有时候,需要存储一大堆相同类型的数据的时候怎么办?
我们虽然可以创建很多个变量,但是终究不是办法,这个时候我们就需要数组了。
在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。
数组解决了:
- 描述数组的性质,定义数组变量
- 使用数组,包括通过数组变量使用其中的变量
- 实现数组,即在内存里为数组安排一种存储方式,让程序方便操作
定义
和普通基本类型相似 都需要指定类型 和 需要一个变量,区别是,需要在变量名后加上 ,
而且在 内需要指定数组的大小。
如
int a[10];// 定义一个 int 类型数组 a,长度为 10
double b[5]; //定义一个 double 类型数组 b,长度为 5
使用
使用数组的最基本是操作元素访问。首元素下标规定为 0 ,这样,n 个元素的数组范围就是从 0 到 n-1 。
如果超过 n-1,则会报下标越界错误。新手经常犯这个错误。
int a[4];
a[0] = 2;
a[1] = 10;
a[3] = a[1] + a[2];
显然,这里我们看不出这里数组有多大作用;
我们来看下 Fibonacci数的数组,获取前30个数,然后从大到小打印出数组内的所有数
直接上代码
long fib[30];
int n;
fib[0] = 1;
fib[1] = 1;
// 计算前30个数,并存入对应数组内
for(n =2;n<30;n++){
fib[n] = fib[n-1] + fib[n-2];
}
//打印结果
for(n=29;n>=0;n--){
printf("%d", fib[n]);
}
从这个例子可以看出, 利用循环变量可以统一形式访问一批数组,这样做可以带来很多方便。用long 类型的数组,是考虑到元素有可能变得很大。
数组初始化
int b[4] = {1,2,3,4};
double d[3] = {1.23,2.34,4.11};
出一道小题给大家练练手,
题目:二进制转换 写一个函数命名为 bin2int, 给定一个二进制数的 0/1 字符串,它能计算出这个字符串所表示的整数值。
int main(){
int n = bin2int("11101110");
printf("%d\n",n);
return 0;
}
请大家完成 bin2int() 方法,在下面回复贴上代码,最好带上注释解释。