ポインタと動的確保について
#include <stdio.h>
#include <stdlib.h>
typedef struct LIST{
int number;
char name[30];
}list;
void test(list** ls)
{
list *tmp;
tmp=*ls; //tmpに*lsのアドレスを参照させる
printf("%d\n",(*ls)->number); //5と表示
printf("%d\n",tmp->number); //5と表示
(*ls)->number=10; //lsの指すものを10に変更
printf("%d\n",(*ls)->number); //10と表示
printf("%d\n",tmp->number); //10と表示
*ls=(list *)calloc(1,sizeof(list)); //lsを動的確保
printf("%d\n",(*ls)->number); //callocで初期化されるので0
printf("%d\n",tmp->number); //10と表示 ← なぜ指すもののlsの値が変わったの
//に値が変わらないのか
}
int main(void)
{
char input[12];
list *ls,ls2;
ls2.number=5;
ls=&ls2;
test(&ls);
scanf("%s",input);
return 0;
}
void test(list **)の内容の動的確保後にポインタ変数tmpが
刺しているはずの**lsの内容が変わったのにtmpの内容が変わらない
理由がわかりません。
よろしくお願いします
お礼
ありがとうございます。やはり無理でした。データ容量を少なくすれば読めるので、この方法でとりあえず仕事します。親切丁寧に教えて下さりありがとうございました!