我刚刚偶然发现了 C 的一个非常奇怪的错误/功能(GCC 在 Windows 上设置为 C11)。
struct my_struct {
char my_string[65];
};
void foo (struct my_struct * array1, struct my_struct * array2) {
array2[0].my_string = array1[0].my_string;
}
int main () {
struct my_struct array1[60];
struct my_struct array2[60];
strcpy(array1[0].my_string, "Hello World!");
foo(array1, array2);
printf("%s\n", array2[0].my_string);
return 0;
}
如果我尝试编译它,
error: incompatible types when assigning to type 'char[65]' from type 'char *'
函数内部foo
。
为什么?它们是完全相同的结构和数据类型。
另外,如果我将功能修改为
array2[0] = array1[0];
有用。但是我正在制作另一个程序,将字符串打印为(null)
. 我不知道为什么,但我会尝试更多。如果我可以制作一个重现错误的片段,我将发布另一个问题。