여기서 우리는 C 변수의 메모리 표현을 인쇄하는 방법을 볼 것입니다. 여기에 정수, 부동 소수점 및 포인터가 표시됩니다.
이 문제를 해결하려면 다음 단계를 따라야 합니다 -
- 변수의 주소와 크기 가져오기
- 바이트 주소를 얻기 위해 주소를 문자 포인터로 형변환
- 이제 변수의 크기를 반복하고 유형변환된 포인터의 값을 출력합니다.
예시
#include <stdio.h> typedef unsigned char *byte_pointer; //create byte pointer using char* void disp_bytes(byte_pointer ptr, int len) { //this will take byte pointer, and print memory content int i; for (i = 0; i < len; i++) printf(" %.2x", ptr[i]); printf("\n"); } void disp_int(int x) { disp_bytes((byte_pointer) &x, sizeof(int)); } void disp_float(float x) { disp_bytes((byte_pointer) &x, sizeof(float)); } void disp_pointer(void *x) { disp_bytes((byte_pointer) &x, sizeof(void *)); } main() { int i = 5; float f = 2.0; int *p = &i; disp_int(i); disp_float(f); disp_pointer(p); disp_int(i); }
출력
05 00 00 00 00 00 00 40 3c fe 22 00 00 00 00 00 05 00 00 00