use*_*878 2 c pointers data-structures
这段代码中的错误是什么?为什么我不能按照我尝试的方式取消引用元素.
#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???
}
Run Code Online (Sandbox Code Playgroud)
jop*_*rat 11
您的结构定义错过了您进一步重用的类型名称.声明左侧和右侧字段时,编译器不知道结构节点是什么.您需要声明您的结构是一个节点.这意味着要更改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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |