(char *)malloc(strlen(str)+1)和char (*malloc(strlen(str)+1))有什么区别?

如题所述

二者不同。
关键在于(char*)……与char(*……),省略掉的部分是相同的。
(char*)是强制类型转换的写法,它是把后面的运算结果转换为“字符型指针”数据类型。
char(*),没有见过这种写法。char a;是变量声明的语句,他把后面的a声明为字符型变量;char*b;则把后面的b声明为字符指针型变量。这两种用法都不需要小括号。
现在星号(*)跑到括号里去了,从未有这种办法声明变量,而且,后面的mallic是一个保留字,不能声明为变量。
所以,后面的写法不知所云,运行时系统会有错误提示。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-08
第一种是正确的,第二种是错误的。
第一种是分配strlen(str)+1字节的空间,返回的指针强制转换为char类型。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网