데이터 형의 케스팅에 관한것인데 이런 경우 어떤곳에 쓰이는 건지 궁금하네요.

dingkyu의 이미지

#include <stdio.h>
 
void getPTAddress(int param)
{
    printf("I got [%x] number\n", param);
    printf("Can I use param as pointer ?\n");
    printf("[%d]\n", *((int*)param));
 
    return;
}
 
int main(void)
{
    int *pPointer   = NULL;
    int number      = 100;
 
    pPointer = &number;
 
    printf("pPointer is %x address\n", pPointer) ;
    printf("pPointer-> %d\n", *pPointer);
 
    getPTAddress((int)pPointer);
 
    return 0;
}

제가 분석해야 하는 코드가 있는데 위와 비슷한 형식의 코드가 있습니다. 분명히 getPTAddress 함수는 포인터의 주소만 받습니다만 설마하고 포인터로 케스팅하고 포인터 처럼 쓰니까 결과가 잘 나와주더라구요. 그런데 왜 이렇게 함수를 만들었는지 이해가 잘 안가네요.
(이렇게 코딩이 가능한가 ? 하고 갸웃거리면서 만들어 봤는데 의외로 잘 되네요..)

혹시 이런 비슷한 코드가 응용될 수 있는 사례가 있을까요 ?