私はちょうどCの本当に奇妙なバグ/機能(WindowsではGCCが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)
。理由はわかりませんが、もう少し試してみます。エラーを再現するスニペットを作成できたら、別の質問を投稿します。