私はこれら2つの違いを理解するのに苦労しています:
typedef struct someStruct{
int x;
char *name;
struct someStruct *next
}TEST1,*pTEST1;
void *copyElement(void* s){
pTEST1 cop = (pTEST1)calloc(1,sizeof(TEST1));
cop = (pTEST1)s;
}
これは、私が間違っていない場合は同じ要素を指しているので、1つを変更すると、すべてのポイントされた要素が変更されます
メモリー内の新しい「場所」に要素の新しいコピーを作成し、それをポイントしたいと思います。
説明を取得したいと思います。
私が得られないもう一つのことは、ポインタの割り当てスペースとオブジェクト自体の違いです。
たとえば、自分の関数を取得してそれを実行すると、次のようになります。
void *copyElement(void* s){
pTEST1 cop = (pTEST1)calloc(1,sizeof(TEST1));
cop = (pTEST1)s;
/*or */
TEST1 a;
pTEST1 b;
a.x =(pTEST1)s->x;
a.name = (pTEST1)s->name;
a->next = (pTEST1)s->next;
b= &a ;
// it means the when the function ends,
// I loose the pointer ? because I didn't
// allocate space for it?
}