Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 변수의 메모리 표현을 어떻게 보여줄 것인가?

<시간/>

여기서 우리는 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