calloc(),类型转换和指针

时间:2014-01-06 19:04:21

标签: c

我是C的新手。

我知道这是对的:

char* Str;
Str = (char*)calloc(Str_Len, sizeof(char));

,但为什么这不正确?

char* Str;
*Str = (char*)calloc(Str_Len, sizeof(char));

如何修改?感谢。

3 个答案:

答案 0 :(得分:1)

首先是合法的,但C中的do not cast the return value of malloc or calloc(因为它们的返回类型为void *) 在第二种情况下,Strchar类型,您无法为其分配更多1字节的内存。此外,calloc会返回pointer,但*Str的类型为char。您无法将char *数据类型分配给char类型。

答案 1 :(得分:1)

实际上两者都不正确,因为不需要将C中的void*转换为另一个 类型,它可以隐式转换。演员表本身并不是错误,但可能导致隐藏错误。

后者是错误的,因为*Str取消引用指针(因此您访问char),这不是指针类型,并且不能从指针分配。

答案 2 :(得分:0)

无论

char* Str;
Str = calloc(Str_Len, sizeof(char));

是否正确