c - 结构和字符串问题

标签 c

这是我的代码:

typedef struct{
  char name[64];
} Cat;

Cat createCat(char name[64]) {
  Cat newCat;

  newCat.name = name;

  return newCat;
}

它编译时出现以下错误信息:

incompatible types when assigning to type 'char[64]' from type 'char *'

我在这里做错了什么?

最佳答案

数组在传递给函数时衰减为指针。所以:

Cat createCat(char name[64]) {

等同于:

Cat createCat(char* name) {

和行:

newCat.name = name;

正在尝试将 char* 分配给 char[],如错误所述。作为Mystical已经评论过了,需要用memcpy()strcpy() (或 strncpy() )将 name 复制到 newCat.name。如果您使用 memcpy(),您必须记住以 null 终止 newCat.name

关于c - 结构和字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11831122/

相关文章:

c - 无法识别的 C 宏

c - 这段代码中 XSynchronize 的类型是什么?

按关键字关闭窗口

c - 在c文件的当前目录中打开并写入一个文件

c - 我该如何处理这个 typedef?

c - 为什么 FT_Load_Char 给我一个垃圾字形位图?

c - 是否可以在预处理器期间检查之前(在头文件中)是否定义了结构?

c++ - ^ =在c/c++中是什么意思?

c - 变量名如何存储在 C 中的内存中?

c++ - __int64 的奇怪列表输出