繁体   English   中英

C中的指针并在链表中使用

[英]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

malloc返回void* (struct NODE *)是一个铸造的本的指针NODE

C中不需要这种强制转换。使用它通常被认为是不好的样式,因为如果您忘记包含<stdlib.h>来声明malloc它可能会导致错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM