|
楼主 |
发表于 2007-10-8 17:15:55
|
显示全部楼层
Post by realtang
0长度的数组:在标准c里面,是不允许0长度的数组的,gcc允许。的确带来了一些方便吧。最主要的应用是表示可变长度的内容时。
例如:
struct line
{
int length;
char contents[0];
};
struct line * x = (struct line*)malloc(sizeof(struct line) + content_length);
x->length = content_length;
在标准c里面,contents长度至少为1才行,这样写malloc的时候长度计算就要复杂一点。
下面是不是典型的用法?
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main() {
- struct line {
- int length;
- char content[0];
- };
- char *hello = "Hello";
- struct line * x = (struct line*)malloc(sizeof(struct line) + strlen(hello) + 1);
- x->length = strlen(hello) + 1;
- strcpy(x->content,hello);
- printf("%s\n",x->content);
- return 0;
- }
复制代码 |
|