-6

ポインター「アイテム」の配列があり、それに値を動的に割り当てる必要があります。すべての配列アイテムは同じ値を持ち、2 番目の for ループで表示される最後の値です。

int h = 0;
char* item[6];
char x[] = "sss";

for (h = 0; h < 6; h++)
{
    item[h] = (char*)malloc(sizeof(char*));
    sprintf(x, "%s (%d)", "item", h);
    item[h] = &x[0];
    printf("item= %s\r\n", item[h]);
}
for (h = 0; h < 6; h++)
{
    printf("item22222= %s\r\n", item[h]);
}

このコードを実行すると、

item= item (0) 
item= item (1) 
item= item (2) 
item= item (3) 
item= item (4) 
item= item (5) 
item22222= item (5) 
item22222= item (5) 
item22222= item (5) 
item22222= item (5) 
item22222= item (5) 
item22222= item (5) 

2 番目のループで同じ結果が繰り返されるのはなぜですか? 最初のループに似ていると思ったでしょう ( item (1), item (2), ...)。コード/ロジックでエラーを見つけるのを手伝ってください。

4

2 に答える 2