我有以下代码:
typedef unsigned char some_type[6];
int main() {
some_type some_var1;
some_type some_var2;
some_var1 = some_var2;
return 0;
}
当我尝试编译它时,我收到以下错误消息:
incompatible types when assigning to type 'some_type' from type 'unsigned char *'
这是为什么?两个变量都是完全相同的类型?我能做些什么才能让它发挥作用?我无法更改typedef,因为它是我正在使用的API的一部分。
答案 0 :(得分:5)
您无法像这样彼此分配数组。如果这些是字符串,请使用strcpy:
strcpy(some_var1, some_var2);
如果没有,请使用memcpy:
memcpy(&some_var1, &some_var2, sizeof (some_type));
答案 1 :(得分:4)
无法以这种方式复制数组。复制数组的常用方法是使用memcpy
。
答案 2 :(得分:1)
您不能将一个数组分配给另一个数组,因为数组会衰减为常量指针。此外,您可能不希望只将一个数组的地址复制到另一个变量中。您需要使用类似memcpy
的内容。
答案 3 :(得分:0)
你应该使用memcpy,因为C不支持以这种方式复制结构。
memcpy(&some_var1, &some_var2, sizeof(some_var));