分配给相同类型的变量时,C不兼容类型错误

时间:2011-08-10 04:25:04

标签: c arrays pointers types

我有以下代码:

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的一部分。

4 个答案:

答案 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));