C语言中数组的一些基本知识小结语言中数组的一些基本知识小结
初始化数组初始化数组
int ages[3] = {4, 6, 9};
int nums[10] = {1,2}; // 其余的自动初始化为0
int nums[] = {1,2,3,5,6}; // 根据大括号中的元素个数确定数组元素的个数
int nums[5] = {[4] = 3,[1] = 2}; // 指定元素个数,同时给指定元素进行初始化
int nums[3]; nums[0] = 1; nums[1] = 2; nums[2] = 3; // 先定义,后初始化
定义但是未初始化,数组中有值,但是是垃圾值。
对于数组来说,一旦有元素被初始 化,其他元素都被赋值0。
计算数组中元素的个数
int count = sizeof(数组) / sizeof(数组[0]) // 数组的长度 = 数组占用的总字节数 / 数组元素占用的字节数
数组注意事项数组注意事项
在定义数组的时候[]里面只能写整型常量或者是返回整型常量的表达式。
int ages['A'] = {19, 22, 33};
printf("ages[0] = %d", ages[0]);
int ages[5 + 5] = {19, 22, 33};
printf("ages[0] = %d", ages[0]);
int ages['A' + 5] = {19, 22, 33};
printf("ages[0] = %d", ages[0])
错误写法。
没有指定元素个数(int nums[] = {1,2,3,5,6}; 这样是可以的,但是如果先声明,并没有初始化,则是错误的)
int a[]; // 错误
[]中不能放变量
int number = 10;
int ages[number]; // 不报错, 但是没有初始化, 里面是随机值
> int number = 10;
>
> int ages[number] = {19, 22, 33} // 直接报错
- > int ages10[5];
>
> ages10 = {19, 22, 33}; // 错误。只能在定义数组的时候进行一次性(全部赋值)的初始化
– 访问数组越界。
数组的内存分配:数组的内存分配:
变量在内存中是从大到小寻址的(内存中以字节为单位),比如00000000 00000000 00000000 00001010在内存
中,00001010的地址是最小的;而数组则有些不同,数组的元素自然的从上往下排列 存储,整个数组的地址为首元素的地址。
(但是组成元素的字节还是按从大到小)