gpt4 book ai didi

c - 链表和 Malloc

转载 作者:行者123 更新时间:2023-11-30 19:18:37 25 4
gpt4 key购买 nike

当通过以下方式创建链接列表时,我了解所发生的一切,除了:

curr = (item *)malloc(sizeof(item));

我知道您正在为项目结构的大小分配足够的内存,但是您到底在用 (item *) 做什么?这是指针表示法还是乘法?

#include<stdlib.h>
#include<stdio.h>

struct list_el {
int val;
struct list_el * next;
};

typedef struct list_el item;

void main() {
item * curr, * head;
int i;

head = NULL;

for(i=1;i<=10;i++) {
curr = (item *)malloc(sizeof(item));
curr->val = i;
curr->next = head;
head = curr;
}

curr = head;

while(curr) {
printf("%d\n", curr->val);
curr = curr->next ;
}
}

最佳答案

这是一个指针转换:它将 void* 返回从 malloc (通用指针)更改为 item* (指针您需要的特定类型)。 void* 是一个可以指向任何内容的指针,但您不能对其进行任何有用的操作,例如间接寻址和算术运算。

也就是说, Actor 阵容是 useless and considered bad practice ,因为 C 语言保证 void* 一旦分配它就会自动转换为正确的类型。只是

curr = malloc(sizeof(item));

可以解决问题,并且不易出错。

关于c - 链表和 Malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26585524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com