C の例でこの構造体があります:
typedef struct
{
const char * array_pointers_of_strings [ 30 ];
// etc.
} message;
文字列をソートするために、この array_pointers_of_strings を新しい配列にコピーする必要があります。アドレスをコピーするだけで済みます。
while ( i < 30 )
{
new_array [i] = new_message->array_pointers_of_strings [i];
// I need only copy adress of strings
}
私の質問は、文字列のアドレスのみに対して malloc() で new_array [i] を割り当てるにはどうすればよいかということです。
ベストアンサー1
while ループ内の代入ステートメントから理解できるように、代わりに文字列の配列が必要だと思います。
char** new_array;
new_array = malloc(30 * sizeof(char*)); // ignore casting malloc
注: =
while ループで以下のように実行します。
new_array [i] = new_message->array_pointers_of_strings [i];
文字列のアドレスを割り当てているだけです(ディープコピーではありません)が、"文字列のアドレスのみ「だから、これがあなたが望んでいることだと思います。」
編集:警告「代入によりポインターターゲット型から修飾子が破棄されます」
この警告が表示されるのは、const の正確性のルールに違反するconst char*
を に割り当てているためです。char*
new_array は次のように宣言する必要があります。
const char** new_array;
またはconst
メッセージ構造から 'array_pointers_of_strings' の宣言を削除します。