1. ホーム
  2. c++

[解決済み】警告:異なるポインタ型の比較【終了しました

2022-02-23 05:08:57

質問

配列の名前を指定することで、配列の0番目の要素のアドレスと同じベースアドレスが得られます。

だから、こうしたんだ...。

int main()
{
    int myArray[10] = { 1, 2 };

    if (myArray == &myArray == &myArray[0])
        printf("Address are equal!!!");

    return 0;
}

プログラムは何も印刷せず、上記のような警告が表示されます。 どなたかこの概念を理解する手助けをしていただけませんか? ありがとうございます。

どうすればいいですか?

まず myArray == &myArray == &myArray[0] は、期待通りの働きをしてくれません。

2つ目 &myArray は、タイプ int (*)[10] 一方 myArray&myArray[0] は、タイプ int * . この2つの型は互いに互換性がありません。