gpt4 book ai didi

c - 具有作用域和全局变量的 Malloc

转载 作者:行者123 更新时间:2023-11-30 15:35:37 31 4
gpt4 key购买 nike

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

struct node {
int num;
struct node *next;
}*head=NULL, *curr=NULL;

void print(){
curr = head;
while(curr != NULL){
printf("%d\n", curr->num);
curr = curr->next;
}
}

struct node* memAlo(){
return (struct node *)malloc(sizeof(struct node));
}

void addNode(int no){
curr = head;
while(curr != NULL){
curr = curr->next;
}
curr = memAlo();
if(curr == NULL){
printf("\nmemory up\n");
return;
}
else{
curr->num = no;
curr->next = NULL;
printf("%d\n",curr->num);
}
}

void hellop(){
printf("%d", head->num);
}

int main(){
int i;
curr = head;
for(i=1;i<10;i++){
addNode(i);
}
print();
/*head = memAlo();
head->num = 1;
head->next = NULL;
hellop();*/
}

我确信我在某个地方搞砸了。问题是头指针没有获得 memAlo() fn() 分配的内存,但是如何到达那里呢?请帮忙

我正在尝试创建一个包含 1 到 9 数字的单链表,并使用 print() 打印它们。实际上AddNode()是在每次执行main()中的for循环时在链表末尾创建单个节点。

最佳答案

您在首次定义 head 的位置设置了 head = NULL。除了那个地方之外,我们在程序中的任何地方都不会在 = 的左侧看到 head 。所以当然 head 总是等于 NULL 而不是其他任何值。

您可能需要在 addNode 函数的开头插入一些代码来测试此时 head == NULL 是否成立;如果这是真的,您将需要将 memAlo() 的结果分配给 head 而不是 curr。您还必须调整其他一些逻辑。

关于c - 具有作用域和全局变量的 Malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22871116/

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