1. ホーム
  2. c

[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?

2022-01-26 03:43:51

質問

int main(void) {
    char testStr[50] = "Hello, world!";
    char revS[50] = testStr;
}

エラーが出ます。の行で "invalid initializer" というエラーが発生します。 revS. 何が間違っているのでしょうか?

解決するには?

を初期化することはできません。 revS の右にある、非常に特殊なものが必要です。 =. から {コード :

14/ 文字型の配列は、文字列リテラルまたは UTF-8 文字列リテラルを中括弧で囲んで初期化することができる。

文字列リテラルの連続したバイト(スペースがある場合や配列のサイズが不明な場合は、終端のヌル文字を含む)は、配列の要素を初期化します。

C11 6.7.9 Initialization /14, /16

16/ そうでなければ、集約型または和集合型を持つオブジェクトの初期化子は、要素または名前付きメンバの初期化子の中括弧で囲まれたリストでなければならない。


同じ結果を得るには、コードを次のように置き換えることができます。

: : :

それは技術的なものではありません 初期化 が、機能的には同じ結果を得ることができます。もしあなたが本当に 欲しい のような初期化を行うことができます。

int main (void) {
    char testStr[50] = "Hello, world!";
    char revS[50]; strcpy (revS, testStr);
    // more code here
}