任何人都可以帮我解释这行做什么
(UserList *) malloc(sizeof(UserList));
我是C世界的新手。我的理解是为Userlist类型分配内存。 如果是这样,为什么定义不仅仅是
Userlist malloc(sizeof(UserList)) ?
答案 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 *”,意味着指向任何东西。