본문 바로가기

프로그래밍/C 기초

[C언어 강좌] #41 void 포인터

이번에는 void형 포인터 시간입니다.


포인터 타입을 정할때 우리는 포인터가 가리킬 대상의 타입에 맞춰서 포인터를 선언해줬었습니다.

하지만 void형포인터는 대상체가 정해져있지 않습니다.


대상체가 정해져있지 않다는말은 다른 자료형들처럼 특별히 하나의 자료형만 가리킬수 있는것이 아니라 모든 자료형을 가리킬수 있습니다.

특별히 하나의 대상이 정해져있지 않습니다.


그럼 여기까지 봤을때는 "아그렇다면 어떤것이든 가리킬수 있으니 항상 void형 포인터를 쓰면 되겠네요!"

라고 생각하실수도 있습니다.


하지만 우리가 포인터를 선언할때 타입을 지정해주는 이유가 무엇이였죠?

대상을 참조할때 어느정도의 크기를 어떻게 읽어야하는지 가르쳐주는 역할을 하는것입니다.

void포인터처럼 가리키는대상이 무엇인지 알수가 없으면 어떻게 참조해야하는지 알수 없습니다.


즉 void형 포인터는 모든 주소를 담을수 있지만 *연산자로 참조할수 없습니다.

void 포인터는 오직 주소값을 담기 위해서만 존재하는 타입입니다.


그렇기때문에 void형 포인터만 사용되는게 아니라 다른 포인터들 사용하는것이죠.



위와같이 void 포인터를 선언할수 있으며, void형 포인터에 *연산자를 사용하려 하면 컴파일러가 에러처리를 하는걸 볼수있습니다.


위 예제처럼 *연산자를 이용해서 참조하려는것은 불가능하다는것이죠.