这是我的代码:
typedef struct{
char name[64];
} Cat;
Cat createCat(char name[64]) {
Cat newCat;
newCat.name = name;
return newCat;
}
Run Code Online (Sandbox Code Playgroud)
它编译时出现以下错误消息:
从类型'char*'分配类型'char [64]'时不兼容的类型
我在这做错了什么?
传递给函数时,数组衰减为指针.所以:
Cat createCat(char name[64]) {
Run Code Online (Sandbox Code Playgroud)
是相同的:
Cat createCat(char* name) {
Run Code Online (Sandbox Code Playgroud)
和行:
newCat.name = name;
Run Code Online (Sandbox Code Playgroud)
正在尝试将a分配char*给a char[],因为错误状态.正如Mystical已经评论过,你需要使用memcpy()或strcpy()(或strncpy())复制name到newCat.name.如果你使用memcpy()你必须记住null终止newCat.name.