我在努力理解结构和指针,因此在我的教科书和网上都努力理解链表的例子。
以下代码是什么意思:
(struct NODE *)malloc(sizeof(struct NODE));
有人会提供详细的解释吗?
我知道正在分配内存(struct NODE 的字节大小),但是,我不明白是什么
(struct NODE *)
方法。
我在努力理解结构和指针,因此在我的教科书和网上都努力理解链表的例子。
以下代码是什么意思:
(struct NODE *)malloc(sizeof(struct NODE));
有人会提供详细的解释吗?
我知道正在分配内存(struct NODE 的字节大小),但是,我不明白是什么
(struct NODE *)
方法。
函数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
.