|
>strdupを使うと代入できます。
>どうしてなのですか。
>前者と後者でどう違うのですか。
説明する前にサンプルを上げてみます。これでポインタの配列の構造が
分かるかなと思うのですが。取り敢えず見てみてください。
int main(int argc, char* argv[])
{
char **area ;
char *buf[] ={"abcde","fghij","klmno"};
// ポインタテーブルを3個分確保したアドレスをセット
area = (char **)malloc(sizeof(char*)*3);
for(int i=0;i<3;i++) {
// i 個番目のテーブルに6バイト確保したアドレスをセット
area[i] = (char *)malloc(6);
strcpy(area[i],buf[i]); // おなじみの文字列コピー
puts(area[i]); // 表示
}
for(i=0;i<3;i++) {
free(area[i]); // i 個番目のポインタを開放
}
free(area); // ポインタテーブルのポインタを開放
return 0;
}
どうでしょう?
|