Lorsque vous allez à travers quelques-uns des liens sur des pointeurs vides, je l'ai vu deux types lors de la configuration et d'obtenir des valeurs de pointeurs vides,différentes façons de configurer et d'obtenir des valeurs de pointeur vide
int main() {
int i = 5;
//This is first way.
void *vPtr = (void *) i;
//printing value of *vPtr,
printf("Getting value in first way, %d\n", (int)vPtr);
//This is second way.
*vPtr = &i;
//printing in second way,
printf("Getting value in second way, %d\n", *((int*)vPtr));
}
deux d'entre eux donnera la même valeur. Bien que j'ai eu une idée de la façon dont la deuxième méthode fonctionne, mais je ne suis pas entièrement sûr, comment la première méthode fonctionne. Quel serait le moyen idéal en traitant des pointeurs de vide parmi ces deux?
Pour la première méthode, il s'agit de l'extrait de code auquel je faisais référence. Bien qu'il passait longtemps type, je pourrais faire la même chose avec int aussi.
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 5
void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
printf("Hello World! It's me, thread #%ld!\n", tid);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc;
long t;
for(t=0;t<NUM_THREADS;t++){
printf("In main: creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
/* Last thing that main() should do */
pthread_exit(NULL);
}
Ne convertissez pas un pointeur en int! Pour imprimer une valeur de pointeur, utilisez le spécificateur de format correct '% p'. S'il vous plaît lire sur l'opération de pointeur, type coversion, etc. vous faites des choses très étranges (et fausses). – Olaf
Salut @Olaf, J'ai ajouté l'extrait de code d'où la première méthode a été utilisée pour définir et obtenir des valeurs de pointeurs vide. – Kiran