gpt4 book ai didi

c - 指向 C 中结构的指针

转载 作者:行者123 更新时间:2023-12-04 09:16:02 27 4
gpt4 key购买 nike

这段代码有什么错误?为什么我不能按照我尝试的方式取消引用该元素。

#include<stdio.h>
typedef struct
{
int value;
struct node * left;
struct node * right;
} node;

int main() {
node* root,*temp;
root = (node*) malloc(sizeof(node));
root->value = 10;
(root->left)= (node*) malloc(sizeof(node));
(root->right)=(node*) malloc(sizeof(node));
((root->left)->value) =20; // WHY AN ERROR HERE???
}

最佳答案

您的结构定义遗漏了您进一步重用的类型名称。当你声明 left 和 right 字段时,编译器不知道 struct node 是什么。您需要声明您的结构是一个节点。这意味着要更改 typedef 别名。请参阅下面的更正,编译正常:

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

typedef struct node
{
int value;
struct node * left;
struct node * right;
} Node;

int main() {
Node* root,*temp;
root = (Node*) malloc(sizeof(Node));
root->value = 10;
(root->left)= (Node*) malloc(sizeof(Node));
(root->right)=(Node*) malloc(sizeof(Node));
((root->left)->value) =20; /* no more errors */

return 0;
}

关于c - 指向 C 中结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912961/

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