gpt4 book ai didi

c - 为什么 printf 函数不打印我希望它打印的列表的值?

转载 作者:行者123 更新时间:2023-11-30 14:44:55 26 4
gpt4 key购买 nike

我无法打印第一个节点的数据值。有人可以告诉我我做错了什么吗?

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


typedef struct S_node{

int data;
struct S_node *next;

} node;


int main () {

node* first;

first->data = 7;
first->next = NULL;

printf("\nData: %d", first->data);

}

我更新了我的代码:

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


typedef struct S_node{

int data;
struct S_node *next;

} node;

void PrintList(node* start);

int main () {

node* first = malloc(sizeof(node));
node* second = malloc(sizeof(node));
node* third = malloc(sizeof(node));

first->data = 7;
first->next = second;

second->data = 6;
second->next = third;

third->data = 5;
third->next = NULL;

PrintList(first);

free(first);
free(second);
free(third);
}

void PrintList(node* start) {

node* currentNode = start;
while(currentNode =! NULL) {
printf("Data: %d", currentNode->data);
currentNode = currentNode->next;
}
}

我正在尝试打印从第一个节点到最后一个节点的数据,但在执行时仍然收到“来自不兼容指针类型的分配”警告

first->next = second;

second->next = third;

当我运行该程序时,没有打印任何内容。

最佳答案

当你有一个像这样的指针

node* first

你应该专门指定这个指针指向哪个地址。通过malloc我们可以获得内存中的动态空间并将地址分配给指针。

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


typedef struct S_node {

int data;
struct S_node *next;

} node;


int main() {

node* first = malloc(sizeof(node));

first->data = 7;
first->next = NULL;

printf("\nData: %d", first->data);

}

关于c - 为什么 printf 函数不打印我希望它打印的列表的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353214/

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