int pi = (int)malloc(sizeof(int));
和
int *pi = malloc(sizeof(int));
用這兩個語句分配內存,又什麼區別嗎?
malloc的原型返回值是void,所以int pi = malloc(sizeof(int)); 在某些编译要求比较严格的编译器中,会报错,因为左值是int,而右值是void,类型不一致。所以推荐方法1.
纠正下,在C语言里这么用的确是没问题的,因为c语言对类型的检查不是那么严格,但在强类型语言比如C++里,这样的用法是编译报错的。对于下面同样的代码,用gcc编译会通过,但是g++会错误,考虑到目前很多代码都是C++/C混编的,所以从我个人的角度我建议方式1)
见图:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。