空数组是指长度为0的数组(int[]或int[0])。
int[]仅可用在类或结构体中。
空数组不占空间。
空数组无需初始化,数组名直接就是所在的偏移。
举个例子:
/// @author zhaolu
struct Data
{
int i;
int ptr[];
};
void test_Data()
{
printf("------------TEST: Data------------\n");
Data data;
printf("sizeof(data) = %lu\n", sizeof(data));
printf("sizeof(data.i) = %lu\n",sizeof(data.i));
//printf("sizeof(data.ptr) = %lu\n",sizeof(data.ptr)); -- error
/*
error: invalid application of 'sizeof' to an incomplete type
'int []'
printf("%lu\n",sizeof(data.ptr));
*/
printf("the address of data = %p\n", &data);
printf("the address of data.i = %p\n", &(data.i));
printf("the address of data.ptr = %p\n", &(data.ptr));
Data datas[3];
printf("the address of data