深入理解 C/C++ 结构体 <6>:struct中0元素数组的意义在哪里? By Long Luo
上一回 大话结构体之六:无即是有,没有成员变量的Struct(结构体) ,我们在文章的结尾留了一个悬念:
—为什么0元素数组在class
和struct
结构体之外定义就是错误的,而在class
和struct
中定义就是Okay的,那么结构体中的0元素数组意义何在?
打个通俗的比喻,比如一个部门,有部门经理、PM、以及数量众多的苦逼程序猿们,某天部门接到一个项目,于是乎,拉出一个PM及数量未知的程序猿们,开工了:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using namespace std;
struct Department
{
int Manager;
int PM;
int ProgrammerNo[0];
};
int main(void)
{
Department *pt = NULL;
int Num = 5;
pt = (Department *)malloc(sizeof(Department) + sizeof(int) * Num);
pt->ProgrammerNo[0] = 006;
pt->ProgrammerNo[1] = 99;
getchar();
return 0;
}
做一个项目,程序猿的数量是变化的,因此我们也就知道
struct
中0元素数组意义就是可以作数量未知的扩展,所以也称为flexible arrays。
通过系列之五和之六,我们了解了0元素数组的意义。在下一篇中我们将试图揭开struct
最复杂和最难的部分:Struct中的函数和函数指针。
不要走开,后面更精彩!
文章修改历史
- Updated by Long Luo at 2016-6-11 04:42:01 @Shenzhen, China.
By Long Luo
上一回 大话结构体之六:无即是有,没有成员变量的Struct(结构体) ,我们在文章的结尾留了一个悬念:
—为什么0元素数组在class
和struct
结构体之外定义就是错误的,而在class
和struct
中定义就是Okay的,那么结构体中的0元素数组意义何在?
打个通俗的比喻,比如一个部门,有部门经理、PM、以及数量众多的苦逼程序猿们,某天部门接到一个项目,于是乎,拉出一个PM及数量未知的程序猿们,开工了:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using namespace std;
struct Department
{
int Manager;
int PM;
int ProgrammerNo[0];
};
int main(void)
{
Department *pt = NULL;
int Num = 5;
pt = (Department *)malloc(sizeof(Department) + sizeof(int) * Num);
pt->ProgrammerNo[0] = 006;
pt->ProgrammerNo[1] = 99;
getchar();
return 0;
}
做一个项目,程序猿的数量是变化的,因此我们也就知道
struct
中0元素数组意义就是可以作数量未知的扩展,所以也称为flexible arrays。
通过系列之五和之六,我们了解了0元素数组的意义。在下一篇中我们将试图揭开struct
最复杂和最难的部分:Struct中的函数和函数指针。
不要走开,后面更精彩!
文章修改历史
- Updated by Long Luo at 2016-6-11 04:42:01 @Shenzhen, China.