网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月28日
漏签
0
天
c语言吧
关注:
801,328
贴子:
4,372,404
看贴
图片
吧主推荐
视频
游戏
12
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
一个蛮大的小问题——结构中定义数组到底是神马?
只看楼主
收藏
回复
O子弹O_O
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
//定义元素节点
struct element
{
long length;
char value[];
};
编译通过了
其中char value[]是一个未定义的数组还是一个指针啊?,我是想在这里存储数据然后传值得,如果是个指针的话……悲催了就
良化纲领_
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
c99提供的柔性数组成员标准写法,动态分配内存吧
2025-11-28 00:46:05
广告
不感兴趣
开通SVIP免广告
O子弹O_O
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
就是这样吗?那我怎么给他初始化大小?
e.value[5]; ←???
还是e.value[] = temp[5];
还是e.value[] = {1,2,3,4,5};
?
良化纲领_
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
struct element *elt = (struct element *) malloc(sizeof(struct element) + VLA_LENGTH);
// no error, no NULL ptr, no kernel POISON
elt->length = some_val;
memset(elt->value, 0, sizeof(char) * VLA_LENGTH);
O子弹O_O
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
多谢多谢了
良化纲领_
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这里实际上不必拘泥于malloc, 只要有一块空间足够的内存块就可以
polyahu
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
VLA_LENGTH是什么... 没见过...
char value[]; 就当做一个指针就可以了吧...
良化纲领_
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
VLA_LENGTH看上去像个宏,所以你直接按照名字读出来就可以了
至于value, 那玩意确实是个数组。以前用char [1]比较麻烦,而char [0]又依赖编译器扩展。
2025-11-28 00:40:05
广告
不感兴趣
开通SVIP免广告
polyahu
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哦,这样啊...
良化纲领_
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这样写比较方便一次性把不定长缓冲区和它的控制信息都申请完,对于一般的内存分配器而言有减少碎片的可能。
polyahu
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
深了... 不太懂这些东西... 什么书里讲到这些?
良化纲领_
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我不太看语言方面的书所以也不知道……不过这个的话如果你做过需要缓冲区的东西应该就有体会,内存分配器也是一样
polyahu
麻婆豆腐
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
嗯... 学无止境...
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示