2015-11-19 149 views
1

可有人请Ç - 指针内存分配

感谢之间
int *x = malloc(sizeof(int)); 

& &

int *x = (int*)malloc(sizeof(int)); 

给我解释的区别!

+0

'malloc'返回一个void指针。当你将它分配给'int'指针时,输入cast总是很好。它在代码中没有任何区别,但是你会避免一个警告。 – Swanand

+0

@Swanand,如果您不输入类别'malloc()'的返回值,您将不会收到任何警告。 – Haris

+0

它的编译器依赖。例如,如果您正在'C++'编译器中编写'C'程序,那么您需要投射。 – SKD

回答

2

不同之处在于,您在第二个示例中投下了malloc()的回报。 malloc()返回一个void*指针,在这种情况下该指针自动安全地提升为任何其他指针类型。

因此在这种情况下铸造不是必需的,不应该这样做。检查here