2010-05-07 3 views
-1

Dans mon application, pour le débogage, je veux enregistrer un pointeur, avant d'y effectuer d'autres opérations, par ex.Comment enregistrer le pointeur dans C

void foo(...) 
{ 
    /* suppose ptr1 points to one of my structs */ 
    ptr1 = NULL; 
    /* before that ptr1=NULL I want to save value of that pointer - how to do it ? */ 

} 

Merci pour toute aide

+0

par la valeur du pointeur que vous voulez dire l'adresse qu'il pointe vers ou la valeur à l'adresse qu'il pointe vers? –

Répondre

0

Vous faites comme ceci:

void foo(MyStruct *struct) { 
    MyStruct debugStruct = *struct; 

    // do stuff to struct 

    printf("Initial configuration: %s", debugStruct.stringField); 
} 
1
mystruct *ptr; 
mystruct copy= *ptr; 
ptr=null; 

copie a maintenant la valeur qui a été initialement pointé par ptr

3

Si par " en sauvegardant le pointeur ", vous voulez dire sauvegarder l'endroit vers lequel il pointe, c'est simplement:

ptr2 = ptr1; 

Si vous voulez parler de sauvegarder les données ptr1 des points alors:

memmove(ptr1, buffer, some_size); /* for void* pointers */ 
*buffer = *ptr1; /* for typed pointers */