c - 捆绑 Malloc 调用
问题描述
我正在浏览 SO 并发现了一些对我提出问题的代码。
struct node* BuildOneTwoThree() {
struct node *list = malloc(3 * sizeof(struct node));
list[0].data = 1;
list[0].next = list+1;
list[1].data = 2;
list[1].next = list+2;
list[2].data = 3;
list[2].next = NULL;
return list;}
我试图了解这个对 malloc 的调用是如何工作的以及它返回什么。它是否返回了一个指针数组?那是怎么回事,我没想到malloc会以这种方式工作?
这似乎保证了各个结构的内存索引是一个接一个的,我认为这可能是一个强大或有用的工具。
同样在调用 malloc 之后,可以将数组索引初始化为
list[0] = (struct node) {1, list +1};
注意:结构节点定义为,
struct node{
int data;
struct node *next;};
解决方案
推荐阅读
- java - 写入文件时的换行问题
- matlab - 打开窗口错误 - MATLAB 中的 psychtoolbox
- python - 如何在 Python 的子目录中找到文件?
- sql - 来自多个数据集和子报告的 SSRS 求和值
- mysql - 在 mysql 数据库中保存反应图标
- python - 使用 CSS 更改 QDocketWidget 悬停标题栏颜色
- reactjs - 如何从 ReactJS 中的外部函数重定向到路由
- java - Apache POI Excel 图表在 Mac 上消失,但在 Windows/Linux 上没有
- agda - 如何在有前提的情况下制作 Adga 函数
- javascript - 未捕获的 ReferenceError:未在 HTMLInputElement.onchange 中定义 readURL