flexible array member
typedef struct Node {int val;int array[];
}Node;
初始错误写法
Node* n = NULL;
n = (Node*)malloc(sizeof(Node)
n->array = (int*)malloc(sizeof(iny) * 10);
正确写法
Node* n = NULL;
n = (Node*)malloc(sizeof(Node) + sizeof(int) * 10);
Node里面的array在构造的时候没有占内存,这个只是相当于一个标记以后有这个东西,因此在初始化内存的时候不能直接n->array = (int*)malloc…
只能在新建结构体的时候直接进行内存分配,进行程序员自定义内存覆盖
(Node*)malloc(sizeof(Node) + sizeof(int) * 10);
当然也可以选择第二种方式,直接用指针,直接在结构体中分配了内存
typedef struct Node {int val;int* array;
}Node;
n->array = (int*)malloc(sizeof(int) * 10);
flexible array member相关推荐
- 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...
- 【C语言】关于结构体最后的长度为0或1数组的思考
需要引起注意的:ISO/IEC 9899-1999里面,这么写是非法的,这个仅仅是GNU C的扩展,gcc可以允许这一语法现象的存在.但最新的C/C++不知道是否可以,我没有测试过.(C99允许.微软 ...
- C发展史:KR C/C89/C99/C11 C++发展史: C++98/C++03/C++11
C语言的发展阶段 C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言. 1967年,剑桥大学的Martin Richards对CPL语言进行了简 ...
- Redis 为什么用跳表而不用平衡树?
本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skiplist展开讨论. Redis里面使用skiplist是为了实现sorted s ...
- c99变长数组_你学过数组,那你知道柔性数组吗?
1 引言 定长数组包 在平时的开发中,缓冲区数据收发时,如果采用缓冲区定长包,假定大小是 1k,MAX_LENGTH 为 1024.结构体如下: // 定长缓冲区struct max_buffer{ ...
- Redis 中的集合类型是怎么实现的?
本文是<Redis内部数据结构详解>系列的第七篇.在本文中,我们围绕一个Redis的内部数据结构--intset展开讨论. Redis里面使用intset是为了实现集合(set)这种对外的 ...
- Redis 为什么用跳表而不用平衡树
Redis 为什么用跳表而不用平衡树? 本文是<Redis内部数据结构详解>系列的第六篇.在本文中,我们围绕一个Redis的内部数据结构--skiplist展开讨论. Redis里面使用s ...
- 3----结构体中使用柔性数组
结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...
- 妙用0元素数组 实现大小可变结构体
妙用0元素数组 实现大小可变结构体 2008-04-06 20:31 http://hi.baidu.com/phps/blog/item/4de94efbe9595660024f56fb.html ...
最新文章
- 乱谈Qt事件循环嵌套
- java数组 序列化_程序猿的日常——Java基础之clone、序列化、字符串、数组
- linux 批量下载图片,Python + Excel 实现图片批量下载
- Docker 使用Dockerfile构建Docker(三)
- MYSQL性能优化分享(分库分表)
- 实验5 OpenGL模型视图变换
- Flutter Gzip 编码与解码 Dart Gzip 工具类操作
- 零零散散的一些知识点(二)
- 机器学习实战笔记1——机器学习导论
- 用Vue3+element-plus+express写个简单的后台管理框架
- Plustoken重要操盘手已被遣返回国,警方正全力侦查
- 三星a5000刷Android原生,三星 A5000中文Recovery刷机教程
- 如何找出当前活动桌面背景图像的位置/路径(Ubuntu 18.04,GNOME)?
- pc端微信聊天记录备份
- 织梦后台发布文章编辑器不显示的解决办法
- 利用火绒黑名单功能屏蔽风险ip地址
- 初学CSS动画之行走的米兔
- 北京社保医院选择办法-附A类医保定点医院名单
- 西哈努克之子柬埔寨国王西哈莫尼抵京-西哈努克-国王-抵京
- C—— warning: function returns address of local variable(函数参数返回错误)