我遇到了这行代码的问题:
struct node* node = (struct node*)
在此上下文中使用代码:
typedef struct node node;
struct node* newNode(int key)
{
struct node* node = (struct node*)
malloc(sizeof(struct node));
node->key = key;
node->left = NULL;
node->right = NULL;
node->height = 1; // new node is initially added at leaf
return(node);
}
为什么指针放在标识符之后?
答案 0 :(得分:1)
这不是整行 - 表达式在下一行继续,直到分号:
struct node* node = (struct node*)malloc(sizeof(struct node));
这是使用强制转换的正常动态分配,在C中完全不需要。该行应如下所示:
struct node* node = malloc(sizeof(struct node));
答案 1 :(得分:1)
所以,这很棘手
struct node* node = (struct node*)
malloc(sizeof(struct node));
可以重写为
struct node* node = (struct node*) malloc(sizeof(struct node));
这只是一种类型转换。
然而,在C中,没有必要从void*
(返回类型malloc
)进行显式转换,反之亦然,与C ++不同。编译器可以完成这项工作。
答案 2 :(得分:0)
您将代码包装到下一行。
struct node* node = (struct node*) malloc(sizeof(struct node));