我正在传递一个指向函数的双指针。函数将数据从文件读取到链接列表中。我将CircuitData设置为指向第一个节点的指针。在我调用函数并想使用CircuitData之后,它是空的。为什么不返回第一个节点的地址(&newPtr)?

ListNodeType **CircuitData;
int numEl = 0;
int numNodes = 0;
CircuitData = NULL;

ReadFile(CircuitData, &numEl, &numNodes);
printf("%p", CircuitData);

我调用的ReadFile函数的一部分:
void ReadFile(ListNodeType **CircuitData, int *numEl, int *numNodes){
    *numEl = 0;
    *numNodes = 0;

    ListNodeType *newPtr, *tempPtr;
    newPtr = malloc(sizeof(ListNodeType));
    CircuitData = &newPtr;
    newPtr->nextPtr = NULL;

最佳答案

首先,声明的CircuitData类型应该是指针:

ListNodeType* CircuitData;

要设置存储在CircuitData中的地址(在ReadFile函数中),您可以编写
*CircuitData = newPtr;

这会将地址CircuitData处的数据设置为存储在newPtr中的地址,这就是您要执行的操作。
您还需要通过调用
ReadFile(&CircuitData, ...)

关于c - 将双指针传递给函数以获取链表(C)的起始地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19436950/

10-09 09:00