C - 打印由 ref 传递的成员链表



此代码不会打印"值成员"的值。 对代码有一些注释。我怀疑错误在于取消引用。 它应该打印零,而是打印随机整数

//Doubly Linked List
#include <stdio.h>
#include <stdlib.h>
//Struct NODE
typedef struct node
{
char index;
unsigned int value;
struct node *next;
struct node *prev;
} NODE;
//Advance by 1 slot and print its value
void printIndex(NODE **node){
//deference one time and get next address
(*node) = (*node)->next;
//deference again and get value integer
printf("->%dn",(*node)->value);//<- I would expect zero but it doesn't
}
int main()
{
//Pointer to struct 
NODE **ptr;
//Initialize struct NODE 
NODE* a = &(NODE) {.index = 0, .next = NULL, .prev = NULL, .value = 0 };
NODE* b = &(NODE) {.index = 1, .next = NULL, .prev = NULL, .value = 0 };
//Reserve space for nodes    
a = malloc(sizeof(NODE));
b = malloc(sizeof(NODE));
//Link nodes    
a->next = b;
b->prev = a;
//Start from (NODE) 'a' and pass its pointer to printIndex( NODE **ptr)
ptr= &a;
printIndex(ptr); 
}

你不需要做一个malloc。 A 和 B 已经指向堆栈上的某些内容。malloc 调用覆盖了 a 和 b 最初指向的内容。因此,您将获得value的随机值

最新更新