void 포인터는 자료형이 정해져 있지 않으므로 역참조 연산을 할 수 없습니다. 하지만 void 포인터를 다른 자료형으로 변환하면 역참조를 할 수 있다. *(자료형 *)void포인터 #include int main() { int num1 = 10; void *ptr; ptr = &num1; // num1의 메모리 주소를 void 포인터 ptr에 저장 // printf("%d\n", *ptr); // 컴파일 에러 printf("%d\n", *(int *)ptr); // 10: void 포인터를 int 포인터로 변환한 뒤 역참조 return 0; } *(int *)ptr와 같이 void 포인터를 int 포인터로 변환한 뒤 역참조를 해야 합니다.(코딩도장) 감사합니다 코딩도장 !!
***함수 포인터도 포인터이므로 구조체 멤버로 넣을 수 있다. 구조체를 사용하는 이유는 구조체 끼리 대입연산이 가능하다. 소스가 간단해진다( 구조체 멤버 변수가 많을 수록 간단해지는것을 확인할 수 있다.) 연관된 자료들을 쉽게 처리할 수 있다. struct 구조체이름 { 반환값자료형 (*함수포인터이름)(매개변수자료형1, 매개변수자료형2); }; 예를 들어, struct stCompany{ // ↓ 반환값 자료형 void(*create)(struct stWorker*); // 함수 포인터를 구조체 멤버로 지정 }; // ↑ ↖ 매개변수 자료형 // 멤버 이름 이렇게 사용할 수 있다. 늘 많은 도움을 받고있는 "코딩도장" 감사합니다. https://dojang.io/mod/page/view.php?id=59..