#include <stdio.h>
#include <string.h>
void main(){
char sss[0]; //array with 0 elements
sss[0]= 'h'; sss[1]= 'o'; sss[2]= 'w'; //how does this line compile wihtout error?
printf("sss after 3 chars added: %s\n", sss);
strcpy(sss, "n");
printf("sss after strcpy: %s\n", sss);
strcat(sss, " stuff");
printf("sss after strcat: %s\n", sss);
}
ここでは、サイズ0の文字配列 'sss'を宣言しました。したがって、任意の要素に任意のcharを割り当てることはできません。ただし、配列は動的に割り当てられたものと同じように動作し、任意の数の文字を割り当てることができます。上記のコードは次の出力を生成します。C文字配列(C文字列)動的か?
sss after 3 chars added: how
sss after strcpy: n
sss after strcat: n stuff
Cは配列の割り当てが厳しく、 "配列のサイズが範囲外です"というエラーが発生すると考えていました。なぜ/これはどうですか?
これを参照してください:http://stackoverflow.com/questions/15646973/how-dangerous-is-it-to-access-an-array-out-of-bounds –
'"配列サイズが範囲外です "エラーこれはCのものでもあるという考えをどこから得ましたか? – John3136
sssは単なるポインタです。 sss [X]は*(sss + X) –