Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

0과 void

0이라는 숫자는 10세기경 인도에서 만들어졌다. 그전에는 ? 1부터 9까지만 있었다. 아무것도 없는 상태를 숫자로 표현한다는 개념자체가 이상하다고 생각했기 때문이다. 예컨데, 로마의 경우에는 0이라는 숫자가 X (10)의 권위를 해친다는 좀 황당한 이유로 0을 사용하는 것을 반대하였다고 한다. 결국에는 사용하게 되었지만 말이다. MMMMMMMM * MMDCXXVI를 계산해야 한다고 생각해보시라. 곱셈은 고사하고 덧셈조차도 수월하지 않을 것이다. MMMMMMMM을 해석하는 것조차 어렵다. 참고로 이들은 로마숫자인데, 다음과 같은 숫자에 대응된다.
I 1
V 5
L 50
C 100
D 500
M 1000
아무것도 없음이라는 0을 발명하게 됨으로써 - 아니 발견이라고 해야 하나 ? - 수치계산이 얼마나 획기적으로 쉬워졌는지를 알수 있을 것이다. 수학에서의 가장 위대한 발명은 미적분의 발견이 아닌 0의 발명일 것이다.

void는 아무것도 없음이라는 의미의 인도어에서 유래되었다 . 사전적인 의미도 아무 것도 없음, 텅빈이다.

프로그래밍 언어에서의 void

C 언어에서 void는 아무것도 없음을 의미한다. 인자로 void가 사용될 경우에는 함수로 넘길 인자가 없다는 의미가 되겠고, 리턴값으로 void가 사용되었다면, 리턴값이 없다라는 의미가 된다.
void hello(void)
{
	printf("Hello World\n");
}
C 이외의 다른 언어들 역시 같은 의미로 사용되고 있다.

void *

그렇다면 혼동되는게 void의 pointer(:12) 타입이다. 사전적으로는 형태가 없는 포인터라고 정의도어 있기는 하지만, 사전대로 해석하기엔 좀 답답한 느낌이다.

약간 달리 해석하자면 아무것도 없는 것을 가리킨다 정도가 될려나 ? 왠지 선문답스럽다는 생각이 들지만, 가만히 생각해보면 나름 고개가 끄떡여지는 측면이 있는 것 같다.

손을 들어서 아무것도 없어보이는 앞을 가리킨다고 생각해보자. 아무것도 가리키지 않지만, 보는 사람에 따라서 산,강,들,구름,하늘,해 등등을 다양하게 가리키는 객체를 해석할 수 있을 것이다. 있는 그대로의 자연이, 사람에 따라서 다양하게 재현되는 것이다.

프로그래밍세계에서의 void 포인터도 같은 의미로 생각할 수 있을 것이다. 무엇을 가리키던지 간에 가리킬 수 있으며, 또한 다양하게 해석될 수 있다. void 포인터가 가리키는 것은 있는 그대로의 비트의 모임이고, bit(:12)의 모임이란 것은 필요에 따라서 representation(재현)될 수 있기 때문이다.

이러한 void 포인터의 특징은 나름 제너릭한 함수를 만들고자 하는 용도로 사용되기도 한다.