带指针的结构赋值

时间:2013-10-20 02:46:05

标签: c

我遇到了这行代码的问题:

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);
}

为什么指针放在标识符之后?

3 个答案:

答案 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));