数组
- 数组是用来存储一组数据的构造数据类型
数组的定义和初始化
- 定义的同时初始化(完全初始化)
int age[4] = {1,2,3,4}
- 定义的同时初始化二(完全初始化)
- 注意点:如果定义的时候没有指定元素的个数,那么元素个数就是初始化的个数
int age[] = {1,2,3,4,5}
- 定义的同时初始化三(部分初始化)
- 注意点:如果只进行了部分初始化,那么没有被初始化的元素的值被赋值为0
int age[4] = {1,3} ----------> age[4] = {1,3,0,0}
- 定义的同时初始化四(部分初始化)
- 注意点:
1. 数组的个数为中括号中的最大值+1
2.一般应用于知道某一个数据
- 注意点:
int age[] = {[0] = 1,[15] = 100};
- 先定义再初始化
- 注意点:
1.定义数组的时候需要初始化数组的长度
2.给元素初始化的时候需要带上中括号+索引
3.先定义再初始化,没有赋值的元素不会赋值为0(QT编译器上)
- 注意点:
int age[];//报错!!!
int age2[4];
age2 = {1,2,3,4};//报错!!!
//正确写法
age2[0] = 1;
age2[1] = 2;
age2[2] = 3;
age2[3] = 4;
遍历数组
- 注意点:
在遍历数组的时候, 循环结束的条件不要写死
规律: sizeof(数组名称) 可以得到该数组占用的内存总大小
规律: sizeof(数组元素) 可以得到该元素占用的内存大小
int length = sizeof(ages) / sizeof(ages[1]);
for(int i = 0; i < length; i++){
printf("ages[%i] = %lf\n", i,ages[i]);
}
数组注意事项
- 数组的索引是从0开始
- 如果索引不在数组的规定的索引范围内, 那么有可能会报错, 也有可能会取出一个不是自己的值
- 注意点: 在使用数组的过程中一定不能超出数组索引的范围
- 范围从0开始, 到元素个数-1;
案例:
int num[2] = {1,2};
char chs[3] = {'a','b','c'};
int num2[2] = {3,4}
printf("chs1[-1] = %c\n", chs1[-1]);// 0 会找到地址0xfefe
printf("chs1[3] = %c\n", chs1[3]);// 1 会找到地址0xff02
内存分析图

网友评论