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