2

なぜこれが機能しないのですか?

#include<stdio.h>
int main()
{
char ch[50];
ch[50]="manipulation";
puts(ch);
}

なぜこれが機能するのですか?

#include<stdio.h>
int main()
{
char ch[50]="manipulation";
puts(ch);
}

「動作する」とは、必要な出力、つまり「操作」(引用符なし) を標準出力として出力することを意味します。

4

3 に答える 3

1
  1. ch[50] = "manipulation"は有効な構文ではありません。より近いものになりますがch = "manipulation"、配列は変更可能な左辺値ではないため、それらに割り当てることはできません。を使用するか、代わりにポインターとしてstrcpy(3)宣言します。ch

    strcpy(ch, "manipulation");
    

    また

    char *ch;
    ch = "manipulation";
    
  2. 2 番目の例は初期化であり、代入式ではありません。このフォームは配列を作成しch、提供された文字列リテラルをコピーして初期化します。

于 2013-08-30T23:07:58.770 に答える
1

次の構文では機能しません。

ch[50]="manipulation";

ch の 50 番目の要素に文字列「manipulation」を割り当てています。配列は個々の文字で構成されており、個々の文字に文字列を割り当てているため、これは不可能です。また、ch には 0 から 49 までの要素があり、50 番目の要素はありません。

私の説明が間違っていたら教えてください。そして私の悪い英語でごめんなさい。

于 2013-08-30T23:29:06.923 に答える