该文章内容整理自《C程序设计(第四版)》、《高质量C编程指南》、以及网上各大博客
C语言不允许对数组大小进行动态调整
一维数组
初始化:
int a[5] = {
1, 2, 3, 4, 5};
int b[5] = {
1, 2}; //b[5] = {1, 2, 0, 0, 0}
int c[5] = {
0}; //c[5] = {0, 0, 0, 0, 0}
int d[] = {
1, 2, 3, 4, 5}; //d[5] = {1, 2, 3, 4, 5}
//在指定了数组长度后,凡未初始化的元素,若整型数据或实数则初始化为0;若为字符型数组,则初始化未'\0';若为指针型,则初始化未NULL
memset(a, 0, sizeof(a));//或直接使用函数初始化数组,此时第一个参数为被设置的内存起始地址,第二个参数为被设置的值,第三个参数为被设置的内存大小
当数组长度设置为0时系统仍会分配一个元素长度。如int a[0]时数组长度为4字节
const常量是在运行时分配空间,而static静态变量是在编译时就分配空间。而数组的长度要是常量且要在编译时就确定,所以数组长度不能用变量,或甚至用const常量来确定。若要用一个量来确定数组长度以便调试时修改,则需要用宏定义或者static const变量来确定。然而,在C99标准中提出了变长数组,意思是可以用一个变量去代替数组的大小。例如 int size = 5;int a[size];
二维数组
初始化:
int a[3][4] = {
{
1