私はいくつかの類似した質問、読んC:違いchar型のポインタと配列の間を、文字の[]とのchar * sの違いは何ですか?、char array []とchar * arrayの違いは何ですか?しかし、それらのどれも私の疑いをクリアするようには見えません。
私はそれを知っています
char *s = "Hello world";
文字列を不変にしますが、
char s[] = "Hello world";
変更することができます。
私の疑問は、私がそうするかどうかでありchar stringA[LEN];
、char* stringB[LEN];
それらは何か違いがありますか?それともstringB
、以前のように再び不変になりますか?
それらは何か違いがありますか?
はい。
変数stringA
とstringB
は両方とも配列です。stringA
配列であるchar
大きさのLEN
とstringB
の配列であるchar *
大きさのLEN
。
char
とchar *
は2つの異なるタイプです。stringA
長さの文字列を1つだけ保持できますがLEN
、の要素は文字列の数をstingB
指すことができLEN
ます。
それとも
stringB
、以前のように再び不変になりますか?
の要素が指す文字列stringB
が変更可能かどうかは、メモリの割り当て方法によって異なります。文字列リテラルで初期化されている場合
char* stringB[LEN] = { "Apple", "Bapple", "Capple"};
その後、それらは不変です。の場合には
for(int i = 0; i < LEN; i++)
stringB[i] = malloc(30) // Allocating 30 bytes for each element
strcpy(stringB[0], "Apple");
strcpy(stringB[1], "Bapple");
strcpy(stringB[2], "Capple");
それらは変更可能です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加