なぜこれが機能しないのですか?
#include<stdio.h>
int main()
{
char ch[50];
ch[50]="manipulation";
puts(ch);
}
なぜこれが機能するのですか?
#include<stdio.h>
int main()
{
char ch[50]="manipulation";
puts(ch);
}
「動作する」とは、必要な出力、つまり「操作」(引用符なし) を標準出力として出力することを意味します。
なぜこれが機能しないのですか?
#include<stdio.h>
int main()
{
char ch[50];
ch[50]="manipulation";
puts(ch);
}
なぜこれが機能するのですか?
#include<stdio.h>
int main()
{
char ch[50]="manipulation";
puts(ch);
}
「動作する」とは、必要な出力、つまり「操作」(引用符なし) を標準出力として出力することを意味します。
ch[50] = "manipulation"
は有効な構文ではありません。より近いものになりますがch = "manipulation"
、配列は変更可能な左辺値ではないため、それらに割り当てることはできません。を使用するか、代わりにポインターとしてstrcpy(3)
宣言します。ch
strcpy(ch, "manipulation");
また
char *ch;
ch = "manipulation";
2 番目の例は初期化であり、代入式ではありません。このフォームは配列を作成しch
、提供された文字列リテラルをコピーして初期化します。
次の構文では機能しません。
ch[50]="manipulation";
ch の 50 番目の要素に文字列「manipulation」を割り当てています。配列は個々の文字で構成されており、個々の文字に文字列を割り当てているため、これは不可能です。また、ch には 0 から 49 までの要素があり、50 番目の要素はありません。
私の説明が間違っていたら教えてください。そして私の悪い英語でごめんなさい。