본문 바로가기

Programming/C & C++

함수와 함수포인터의 차이(void* point)

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 *의 사용 예라고 할수 있습니다.

반응형