что означает преобразование int в void * или наоборот?

Что означает преобразование целого числа в void * или наоборот с точки зрения памяти? Насколько я понимаю, void * - это адрес блока памяти неопределенной длины.
Это похоже на сравнение яблока с апельсином.

int myval = 5;
void* ptr = (void*)myval;
printf("%d",(int)ptr);

Я понял, что должен был указать точный контекст, в котором это используется.

int main(int argc, char* argv[]) {
long       thread;  /* Use long in case of a 64-bit system */
pthread_t* thread_handles; 

/* Get number of threads from command line */
if (argc != 2) Usage(argv[0]);
thread_count = strtol(argv[1], NULL, 10);  
if (thread_count <= 0 || thread_count > MAX_THREADS) Usage(argv[0]);

thread_handles = malloc (thread_count*sizeof(pthread_t)); 

for (thread = 0; thread < thread_count; thread++)  
  pthread_create(&thread_handles[thread], NULL, Hello, (void*) thread);  

printf("Hello from the main thread\n");

for (thread = 0; thread < thread_count; thread++) 
  pthread_join(thread_handles[thread], NULL); 

free(thread_handles);
return 0;
}  /* main */

/*-------------------------------------------------------------------*/
void *Hello(void* rank) {
long my_rank = (long) rank;  /* Use long in case of 64-bit system */ 

printf("Hello from thread %ld of %d\n", my_rank, thread_count);

return NULL;
}  /* Hello */

Этот код взят из книги Питера Пачечо по параллельному программированию.

23
задан Mathai 23 December 2011 в 19:17
поделиться