1

我在努力理解结构和指针,因此在我的教科书和网上都努力理解链表的例子。

以下代码是什么意思:

(struct NODE *)malloc(sizeof(struct NODE));

有人会提供详细的解释吗?

我知道正在分配内存(struct NODE 的字节大小),但是,我不明白是什么

(struct NODE *)

方法。

4

2 回答 2

2

函数malloc()返回分配内存的地址。malloc()函数的返回类型是void*(它不知道您为哪种类型的数据分配内存),将其分配给您的结构类型的指针,您将其类型转换为所需的类型。所以在你的表达(struct NODE *) 中是类型转换指令:

(struct NODE *) malloc (sizeof(struct NODE));
     ^              
     |             ^
      Typecast     | call of malloc function with argument = sizeof(struct NODE)

通常,您应该避免在Cmalloc中对/calloc函数的返回值进行类型转换(请阅读:我是否转换了 malloc 的结果?

在 C 中,类型转换的语法是:

 (rhsdatatype) data;

rhsdatatype应该在括号之前data

有时在编程中你需要类型转换:例如。

int a = 2; 
int b = 3; 
double c = a / b; 

此代码输出0.0,因为2/3两者都是整数,/结果将是 int 0,并且您分配给 double 变量c = 0。(你可能不想要什么)。

所以这里的类型转换是解决方案,新代码是:

int a = 2; 
int b = 3; 
double c = (double)a / (double)b; 

它输出实数输出,即:0.666.

于 2013-07-17T21:33:14.807 回答
1

malloc返回void*(struct NODE *)this指向NODE.

在 C 中不需要这种转换。使用它通常被认为是糟糕的风格,因为如果您忘记<stdlib.h>包含malloc.

于 2013-07-17T21:30:30.907 回答