gpt4 book ai didi

c - 将指针分配给另一个指针的地址

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:27 24 4
gpt4 key购买 nike

我对以下代码的含义感到非常困惑。在 somefunction 中,参数是指向结构节点的指针。大体上,我要输入的参数是另一个称为 A 的指针的地址位置。那么这到底是什么意思呢? A和B有什么区别? A 和 B 代表同一个指针吗? B 现在是否在 (*B)=C 行之后指向 C?

struct node{
int value;
};

void somefunction(Struct node *B)
{
struct node *C = (struct node *)malloc(sizeof(struct node));
(*B)=C;
};

main()
{
struct node *A;
somefunction(&A);
}

最佳答案

当您通过指针传递时,您希望函数内所做的更改对调用者可见:

struct node {
int value;
};

void foo(struct node* n) {
n->value = 7;
}

struct node n;
foo(&n);
// n.value is 7 here

当你想改变指针本身时,你传递一个指针的地址:

void createNode(struct node** n) {
*n = malloc(sizeof(struct node));
}

struct node* nodePtr;
foo(&nodePtr);

关于c - 将指针分配给另一个指针的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170836/

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