谁能帮我解释这行做无法理解这样的代码做什么
(UserList *) malloc(sizeof(UserList));
我是新的C世界。我的理解是为Userlist类型分配内存。 如果是这样,为什么定义不只是
Userlist malloc(sizeof(UserList)) ?
谁能帮我解释这行做无法理解这样的代码做什么
(UserList *) malloc(sizeof(UserList));
我是新的C世界。我的理解是为Userlist类型分配内存。 如果是这样,为什么定义不只是
Userlist malloc(sizeof(UserList)) ?
这段代码是做是为UserList
类型的结构分配动态内存。前面的表达式(UserList*)
告诉编译器哪种类型要处理由malloc
返回的值。由于malloc
在C中是通用的,并且可以返回指向任何类型的指针(有效地使用C术语,void*
),所以您可以告诉编译器该指针指向的是什么类型。这通常发生在UserList*
类型的变量的初始化的情况下:
UserList* user_list = (UserList *) malloc(sizeof(UserList));
注意变量中获得的结果如何是指向正确的类型。您可以使用正常的*user_list
语法访问此新分配内存中指针指向的结构。
实际上,你不必告诉编译器什么类型的内存,它实际上是C社区所不喜欢的。 – Blindy
@布林迪:是的,谢谢,正当我重新阅读时纠正了它。 :) –
malloc向分配的内存返回一个指针(内存位置)。 *表示“指向”UserList而不是用户列表本身。
我不确定这一行是声明还是声明。如果它是一个语句,那么括号会导致返回的指针类型被转换为“指向UserList的指针”而不是“void *”,这意味着指向任何东西。
我们需要更多的上下文。我想第一行可能是演员。但是你可能会把它分配给某些东西。 – onemasse
争论语法(即,“为什么不是这样,而不是...?”)似乎有点..毫无意义,你不觉得吗?就是这样。 – Blindy
答案:这段代码不会有任何用处。 –