C 数组(Arrays)
数组是存储同类型元素的顺序集合,内存连续。本章介绍一维/多维数组、初始化、传参与常见陷阱。
1. 一维数组
2. 多维数组
3. 数组与指针的关系(衰变)
- 在表达式或函数实参中,数组名会衰变为指向首元素的指针(类型为 T*)
sizeof(a)在数组作用域内是整个数组的字节数,但在函数形参中sizeof得到的是指针大小
4. 作为函数参数
也可写作 void fill(int arr[], int n, int v),本质相同。
5. 边界与安全
- 严禁越界访问:
arr[i]必须满足0 <= i < N - 推荐传递长度参数,或使用结构封装(指针+长度)
6. 动态数组
- 使用
malloc/calloc/realloc/free管理动态数组,见内存管理章节
7. 二维数组传参
或使用一维展开并自行计算索引:m[i * cols + j]
8. 常见陷阱
- 把数组当作值整体返回(C 不支持,需要结构体或指针)
- 在函数内
sizeof(param)不是数组总大小,而是指针大小
9. 小结
正确处理长度与边界,理解数组衰变与多维传参,是使用数组的关键。