c언어 - 포인터 자료형 변환하기

(자료형 *) 포인터

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>    // malloc, free 함수가 선언된 헤더 파일
 
int main()
{
    int *numPtr = malloc(sizeof(int));    // 4바이트만큼 메모리 할당
    char *cPtr;
 
    *numPtr = 0x12345678;
 
    cPtr = (char *)numPtr;     // int 포인터 numPtr을 char 포인터로 변환. 메모리 주소만 저장됨
 
    printf("0x%x\n"*cPtr);   // 0x78: 낮은 자릿수 1바이트를 가져오므로 0x78
 
    free(numPtr);    // 동적 메모리 해제
 
    return 0;
}
 
// 실행결과
// 0x78
cs


실행 결과가 0x78인 이유.

 numPtr이나 cPtr이나 안에 저장된 메모리 주소는 같지만 자료형에 따라 역참조했을 때 값을 가져오는 크기가 결정

공부 : c언어 코딩도장

댓글