正しく初期化文字列は次のとおりです。
char array[] = "something";
その10 char型の配列。
しかし、あなたが書いた場合:
`char* array = "something";`
`それは別のオブジェクトである、あなたは、配列の内容を変更することはできません。
と:
char* array[]
は文字列ではありません。
これは、charポインタ(char *)の配列です。あなたは
EXP *各文字のためにメモリを割り当てる必要があります。
char* array[3];
array[0] = malloc (10*sizeof(char));
strcpy(array[0] , "hello");
しかし、あなたが直接行うことができないのchar *の配列を、持っている:
char* array[3];
array[0] = "hello";
でもない:
char* array[] = {"first","second","other one","last"};
このinitでは、文字列を変更できません。
私が書いていることを言っている人はtotalyが間違っています。char *がメモリ割り当てを必要としていることを知っていますか?
なぜ-6以上ですか?
特にCでは{}を使って実際にスカラーを初期化することができます。ただし、アラインメントに影響があるかどうかは疑問です。いいえ..アラインメントには何の影響もありません:) –
OK。だから私はこのケースでは全体の表現を考慮する必要があるだけでなく、左側ですか?例えば 'char配列* [] = {" s "};'は有効ですが 'char配列* [] =" s ";'そうではありません。 – Antoine
char配列はどうですか* [] = {"s"};有効ですか?それは構文エラーです –