int*  는 포인터 변수인데 그 가르키는 주소의 type이 int, char* 는 포인터 변수인데 가르키는 주소의 type이 char

그렇다면 void* 는 가르키는 주소의 type이 void 라는 말인데.. void 라는 애매모호한 type이 도대체 뭘까?

 

void*

void*는 바로 범용적 포인터 즉 일단 가르키고 본다. 어떤 포인터라도 대입이 가능하다 이말이다.

매개 변수로 void*를 사용하면 모든 포인터를 일단 받고 보겠다 이말이다.

 

하지만 역참조나 포인터 산술 연산을 할 때는 반드시 다른 포인터로 캐스팅해서 써야한다

void* var로 받고 나중에 역참조할때는 *(int* var) 이런식으로 해줘야한다!

 

 

C 언어 포큐아카데미

 

1. void* p에 float 포인터를 담았다. printf로 값을 출력할 때는 반드시 float 포인터로 캐스팅 해줘야한다.

2. 함수 add의 op1, op2는 void*로 일단 담았다. 역참조 할떄는 반드시 *(int*)op1, *(int*)op2 처럼 캐스팅 해줘야한다.

 

이렇게 캐스팅해주지 않으면 컴퓨터 입장에서 몇 바이트 만큼 읽으라는지 알 수가 없다!!

 

포큐아카데미 C언어 복습

'C' 카테고리의 다른 글

C언어 빌드과정(컴파일)  (0) 2020.02.25
C언어 배열 삽입, 삭제  (2) 2020.01.03
C 언어 변수에 함수 할당  (0) 2019.12.20
C언어 얕은복사 vs 깊은복사  (0) 2019.12.18
C언어 구조체  (0) 2019.12.18

+ Recent posts