(자료형 *) 포인터
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언어 코딩도장
댓글
댓글 쓰기