void main() // 이것은 'return되어질 값이 없음'이라는 뜻
void *main() // 이것은 '형이 없는 포인터 값이 return된다'라는 뜻
void 포인터 형은 메모리를 액세스하기위한 정보가 없기때문에
반드시 사용자가 컴파일러에게 어떤형으로 엑세스를 하겠다고 알려줘야 합니다.
ex) 보이드 포인트의 사용예
void *p;
int n=100;
p= &n;
printf("void *p : %d", *(int *)p);
출력
void *p: 100
포인터를 배우셨으면 아시겠지만 p값에 n의주소를 대입해주었고.
p를통해 n의 값을 엑세스하기위해 *(int *)p라는 식을 써써 n의 값을 얻었습니다.
*(int *)p는 int형으로 p가 가르키는 값을 엑세스하겠다는 뜻입니다.
void*는 주소값에대한 개념만 있지 메모리를 어떻게 엑세스를 해야하는지는 정의되어 있지
않으므로 반드시 사용자가 컴파일러에게 엑세스 방법에대해서 알려줘야 합니다.
특히 메모리 할당 함수 malloc가 void *의 사용 예라고 할수 있습니다.
반응형