C-数组
1, 特点
- 只能存放一种类型的数据, 比如int类型的数组、float类型的数组
- 存放的数据成为“元素”
2, 定义格式
类型 数组名[元素个数】
int ages[5]
3,正确:
int ages[5] = {[3] = 10, [4] = 11};
int ages['A'] = {10, 11, 12, 14, 16}; int size = sizeof(ages); printf ("%d\n", size);//数组占据多少个字节 结果为260//
int ages[5] 在内存中的存储形式:
所以int ages['A'] 相等于 int ages[65] 一共有 65*4 个字节
1, 错误写法:int ages[5];
ages = {10,11,12,14};
//只能在定义数组的同时进行初始化
2, 正确写法:int count = 5;
int ages[count];
ages[0] = 10;
ages[1] = 11;//定义数组和初始化没有同时进行
错误写法:int count = 5; int ages [count] = {10, 11, 12};
//如果想在定义数组的同时进行初始化,数组元素的个数必须是常量,或者不写
- 计算数组元素个数 int count = sizeof(ages)/sizeof(int);
数组 在内存中的存储细节
数组里面的元素是从小到大排列的
如
int main() { char cs[5] = {'a', 'A', 'D', 'e', 'f'} }
int ages[3] = {10, 19, 18};
ages地址为0x7ff5df43bd8
ages[0]: 0x7ff5df43bd8
ages[1]: 0x7ff5df43bdc
ages[2]: 0x7ff5df43be0
元素地址与数组下标一样是递增的
数组与函数
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组
//数组作为函数参数传递时,函数当做指针来使用,在64bit编译器环境下,占据8个字节
//
//改了里面的数组相当于改了外面的数组
void change (int array[])