[英]pointers in C and use in linked list
我正在努力理解结构和指针,因此,努力在我的教科书和在线中理解链表的例子。
以下代码的含义是什么:
(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)
通常,您应该避免在C中使用 malloc
/ calloc
函数的类型转换返回值(请阅读: 我是否转换了malloc
的结果? )
在类型转换的C语法中:
(rhsdatatype) data;
rhsdatatype
应该在data
之前用括号括起来。
有时在编程中你需要进行类型转换:例如。
int a = 2;
int b = 3;
double c = a / b;
此代码输出0.0
因为2/3
都是/
result的整数将是0
int,并且您指定给双变量c = 0
。 (你可能不想要的)。
所以这里的类型转换是解决方案,新代码是:
int a = 2;
int b = 3;
double c = (double)a / (double)b;
它输出实数输出: 0.666
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.