gpt4 book ai didi

c - 指针之间的赋值仅在 main 内部有效,而在过程体中无效

转载 作者:行者123 更新时间:2023-11-30 15:03:45 25 4
gpt4 key购买 nike

如果我尝试在过程体内的结构体指针之间进行复制,则会收到段错误错误。

如果我在 main() 主体内的指针之间进行复制,一切都会正常工作。

代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct node {
int value;
struct node *father, *lchild, *rchild;
} node;

typedef struct node Node;

// Prototypes
Node* insertRoot(int val, Node* N);


int main(){

Node * A = NULL;

Node * b = insertRoot(10, A);

//A = b; // If I do the assignment here it works correctly.

printf("A->value = %d \n\n" , A->value); //Segmentation fault!

return 0;
}

Node* insertRoot(int val, Node* N){
Node* temp = malloc(sizeof(Node));
temp->value = val;
temp->father = NULL;
temp->lchild = NULL;
temp->rchild = NULL;

N = temp; // If I do the assignment here instead, it won't work.

return temp;
};

最佳答案

您没有为 insertRoot 内的 A 分配任何值,而是分配给 N,它是 A< 的副本。这使得 A=NULL 值保持不变。

关于c - 指针之间的赋值仅在 main 内部有效,而在过程体中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40576013/

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