Ý nghĩa của việc chuyển đổi giá trị số nguyên thành một số void*
hoặc ngược lại từ một điểm bộ nhớ? Sự hiểu biết của tôi là void*
là một địa chỉ cho một khối bộ nhớ có độ dài không xác định.
Điều này có vẻ giống như so sánh táo với cam.ý nghĩa của việc chuyển đổi int thành void * hoặc ngược lại là gì?
int myval = 5;
void* ptr = (void*)myval;
printf("%d",(int)ptr);
Tôi nhận thấy rằng tôi nên đưa ra ngữ cảnh chính xác nơi sử dụng điều này.
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 */
Mã này là từ sách của Peter Pachecho về lập trình song song.
Bản sao có thể có của: http://stackoverflow.com/questions/3568069/is-it-safe-to-cast-an-int-to-void-pointer-and-back-to-int-again –
Đó là thậm chí tệ hơn .. - ít nhất là so sánh táo với khoai tây – alk