c언어 - void 포인터 변환하기


void 포인터를 다른 자료형으로 역참조

*(자료형 *) void 포인터

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
 
int main()
{
    int num1 = 10;
    float num2 = 3.5f;
    char c1 = 'a';
    void *ptr;
 
    ptr = &num1;    // num1의 메모리 주소를 void 포인터 ptr에 저장
    // printf("%d\n", *ptr);         // 컴파일 에러
    printf("%d\n"*(int *)ptr);     // 10: void 포인터를 int 포인터로 변환한 뒤 역참조
 
    ptr = &num2;    // num2의 메모리 주소를 void 포인터 ptr에 저장
    // printf("%f\n", *ptr);         // 컴파일 에러
    printf("%f\n"*(float *)ptr);   // 3.500000: void 포인터를 float 포인터로 변환한 뒤 역참조
 
    ptr = &c1;      // c1의 메모리 주소를 void 포인터 ptr에 저장
    // printf("%c\n", *ptr);         // 컴파일 에러
    printf("%c\n"*(char *)ptr);    // a: void 포인터를 char 포인터로 변환한 뒤 역참조
 
    return 0;
}
 
// 실행결과
// 10
// 3.500000
// a
cs

공부 : c언어 코딩도장

댓글