0

次のコードが何を意味するのか非常に混乱しています。パラメータにはsomefunction、構造体ノードへのポインタがあります。主に、私が入れている引数は、A と呼ばれる別のポインターのアドレス位置です。では、それは正確にはどういう意味ですか? A と B の違いは何ですか? A と B は同じポインタを表していますか? B は行の後で C を指しています(*B)=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);
}
4

2 に答える 2

1

ポインターで渡す場合、関数内で行われた変更が呼び出し元に表示されるようにする必要があります。

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);
于 2013-10-03T23:42:48.847 に答える