2010-11-02 5 views
1

Une belle question interview C:Ecrire une fonction qui intervertit deux int * en c et également écrire appel à cette fonction

Pouvez-vous écrire une fonction qui intervertit deux int * en C et écrire aussi un appel à ce fonction?

int a = 10, b = 20; 
int* first_pointer = &a; 
int* second_pointer = &b; 
/* Below line should print (*first_pointer) = 10, (*second_pointer) = 20 */ 
printf("(*first_pointer) = %d, (*second_pointer) = %d\n",*first_pointer, *second_pointer); 
/// **** Call your swap function here **** 
/* Below line should print (*first_pointer) = 20, (*second_pointer) = 10 */ 
printf("(*first_pointer) = %d, (*second_pointer) = %d\n",*first_pointer, *second_pointer); 
+0

Quelle est votre solution? – sharptooth

+1

Je ne vois pas de question. – Aistina

+0

@sharptooth: soumis. – SunnyShah

Répondre

5

Fonction est ici,

void swap(int** first_pointer, int **second_pointer) 
{ 
    int *temp = *first_pointer; 
    *first_pointer = *second_pointer; 
    *second_pointer = temp; 
} 
appel de fonction

est ici,

int a = 10, b = 20; 
int* first_pointer = &a; 
int* second_pointer = &b; 
// Below will print (*first_pointer) = 10, (*second_pointer) = 20 
printf("(*first_pointer) = %d, (*second_pointer) = %d\n",*first_pointer, *second_pointer); 
swap(&first_pointer, &second_pointer); 
// Below will print (*first_pointer) = 20, (*second_pointer) = 10 
printf("(*first_pointer) = %d, (*second_pointer) = %d\n",*first_pointer, *second_pointer); 
+0

Le problème * possible * que je vois ici est que vous manipulez des pointeurs non initialisés - il est malade egal en C++ et peut-être aussi en C - http://stackoverflow.com/questions/1866461/why-should-i-not-try-to-use-this-value-after-delete-this – sharptooth

+0

Oh oui, votre code contient un comportement indéfini - http://stackoverflow.com/questions/4076563/is-using-an-invalid-pointer-value-legal-in-c – sharptooth

+0

J'ai ajouté un astérisque manquant à la déclaration second_pointer. – unwind

Questions connexes