Embedded World

[C] void* 포인터 본문

소프트웨어/C

[C] void* 포인터

jh-rrr 2025. 8. 4. 00:28

전문가를 위한 C 책을 보다가, 다음과 같은 함수를 만났다.

 

void* thread_body(void* arg){
	printf("Hello from first thread!");
    return NULL;
}

음... 이전에 void형 포인터를 공부한 적이 있었는데 까먹었다.. 이참에 확실히 정리해두고자 한다.

 

 

int a = 10;
int* b = &a;

이 코드를 말로 풀어 설명하면 "b는 a의 주소를 저장하는데, 그 주소에는 int형 데이터가 있다." 이다. 맞는 말이다.

int a=10;
void* b=&a;

이번엔 이 코드를 풀어 설명하면 "b는 a의 주소를 저장하는데, 그 주소에는 void형 데이터가 있다." 이다.

그런데... void는 값이 없음을 의미하는 심볼이 아니던가? 컴퓨터는 자료형을 모르기 때문에 아무것도 없는 것처럼 보는 것 이라고 한다.(출처

이를 다시 표현하면 "b는 a의 주소를 저장하는데, 그 주소에는 알 수 없는 자료형의 데이터가 있다..." 가 된다.

 

void형 포인터를 사용하려면 원본 변수의 자료형으로 캐스팅을 해주면 된다.

printf("%d", *b); 		// ERROR!
printf("%d", *(int*)b); 	// works!

 

 

그렇다면 다시, 

void* thread_body(void* arg){
	printf("Hello from first thread!");
    return NULL;
}

는 어떻게 해석하면 될까?

 

to be continued... 

 

 

 

reference https://reakwon.tistory.com/19