gpt4 book ai didi

c - 取消引用结构体的双指针时出现问题

转载 作者:行者123 更新时间:2023-11-30 19:49:00 25 4
gpt4 key购买 nike

我似乎无法读取双指针指向的数据。这是为了我必须使用双指针的分配。

出现以下错误:

Error: Access violation reading location. 

这是代码:

struct Fraction {

int num, denom;<br>
};
struct PolyTerm {

struct Fraction coeff;
int exponent;v
};
struct PolyNode {

struct PolyTerm** dataPtr;
struct PolyNode* next;
};

void printPolyTerm(struct PolyTerm** argTerm) { // this function works fine><br>

printFraction(&(argTerm->coeff)); //also works fine
printf(" X^%d", argTerm->expo);
return;
}
void printPolyNode(const PolyNode* node) { //NOT WORKING<br>

struct PolyTermPS** ppTerm = node->dataPtr;
struct PolyTermPS* pTerm = *ppTerm;
printPolyTerm(pTerm);
return;
}

最佳答案

函数 void printPolyTerm(struct PolyTerm** argTerm) 接受双指针,因此,来自 void printPolyNode(const PolyNode* node) 的调用必须更改:

void printPolyNode(const PolyNode* node) {  //NOT WORKING<br>

struct PolyTermPS** ppTerm = node->dataPtr;
struct PolyTermPS* pTerm = *ppTerm;
printPolyTerm(pTerm);
return;
}

必须是

void printPolyNode(const PolyNode* node) {  //NOT WORKING<br>

struct PolyTerm** ppTerm = node->dataPtr;
struct PolyTerm* pTerm = *ppTerm;
printPolyTerm(&pTerm);
return;
}

现在,在 void printPolyTerm(struct PolyTerm** argTerm) 函数中,您必须取消引用双指针,我的意思是:

  • argTerm 是指向 struct PolyTerm 指针的指针。
  • *argTerm 是指向 struct PolyTerm 的指针

所以,你必须更换

void printPolyTerm(struct PolyTerm** argTerm) { // this function works fine><br>

printFraction(&(argTerm->coeff)); //also works fine
printf(" X^%d", argTerm->expo);
return;
}

void printPolyTerm(struct PolyTerm** argTerm) { // this function works fine><br>

printFraction(&((*argTerm)->coeff)); //also works fine
printf(" X^%d", (*argTerm)->exponent);
return;
}

另一种情况之所以有效,只是因为你太幸运了。

关于c - 取消引用结构体的双指针时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15964653/

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