无法理解这段代码的作用

时间:2011-09-29 14:53:49

标签: c

任何人都可以帮我解释这行做什么

(UserList *) malloc(sizeof(UserList)); 

我是C世界的新手。我的理解是为Userlist类型分配内存。 如果是这样,为什么定义不仅仅是

Userlist malloc(sizeof(UserList))  ?

2 个答案:

答案 0 :(得分:2)

此代码正在做的是为UserList类型的结构分配动态内存。前面的表达式(UserList*)告诉编译器要处理由malloc返回的值的类型。由于malloc在C中是通用的,并且可以返回指向任何类型的指针(实际上在C术语中,void*),您可以告诉编译器您期望此指针指向哪种类型。这通常发生在类型UserList*的变量初始化的上下文中:

UserList* user_list = (UserList *) malloc(sizeof(UserList));

注意获取结果的变量是指向正确类型的指针。您可以使用正常的*user_list语法访问此新分配的内存中指针指向的结构。

答案 1 :(得分:0)

malloc将指针(内存位置)返回给分配的内存。 *表示指向UserList的“指针”而不是用户列表本身。

我不确定这一行是声明还是声明。如果它是一个语句,那么括号会导致返回的指针的类型被强制转换为“指向UserList”,而不是“void *”,意味着指向任何东西。