好的我已经重新创建了一个较小的例子,问题仍然存在......
评论表明最新情况。期望指针为NULL,但是在第二次将指针传递给另一个函数后,IM会得到一个带有NULL值的结构。
header.h
typedef struct node {
int data;
struct node *next;
} *List;
由source.c
#include "Header.h"
#include <stdio.h>
#include <stdlib.h>
void two(List *self)
{
//*self does not = NULL now
//*self = a struct with null data and next values
}
void one(List *self)
{
two(&self);
// *self = 0x0000... NULL
}
int main()
{
List test = NULL;
one(&test);
}
答案 0 :(得分:0)
您的one()
功能应该是:
void one(List *self)
{
two(self);
}
请使用参数-Wall
进行编译。此外,建议使用-Wextra
和-Werror
。
答案 1 :(得分:0)
List test = NULL;
one(&test);
test
是指向struct node
的指针。我们传递了那个地址
指向one
的指针,允许one
更改test
(让它返回
新指针是一种更简洁的方法。)
one
然后执行此操作:
two(&self);
two
现在正在传递test
地址的地址。这是
可能不是你想要的。传递test
的地址仍然允许
如果您想要这样做,则更改test
:
two(self);