Language/C C언어 강좌 (포인터 함수 구성/hexa view)
  • 728x90
    반응형

     

     

     

    C언어 Chapter 12.

    ✨ 메모리 뷰어를 컴파일 디버그로 보기


     

     

    복습

     

     

    🎯 비트 논리 연산자

    • & : 비트로 세분화(2진수) 하여 한자리씩 and논리 연산.
    • ^ : 비트로 세분화(2진수) 하여 한자리씩 xor 논리연산.

    두개의 값이 서로 다를 때 참이다.

    • | : 비트로 세분화(2진수) 하여 한자리씩 or 논리연산.

     

    Ex) 24 | 32

      11000

    100000

    111000

     

     

    포인터 함수 구성

    • &(ampersand) 는 주소연산자이다. &x는 변수가 할당받은 메모리의 주소를 말한다.
    • 형식지정자 %p는 주소를 출력할 때 사용.

    printf("the address of x: %p\n", &x);

     

    • 출력문으로 x가 할당받은 메모리의 주소는 0012FF7C 라는 것을 알 수 있다.
    • 주소 연산은 덧셈( + )과 뺄셈( - )만 사용 가능하다.
    • 0012FF7C는 정해진 값이 아니라 프로그램 실행시 할당되는 메모리의 주소이기 때 문에 매번 실행 때마다 값이 달라질 수 있다.

    int *p;

    • 변수 선언에서 p는 포인터 형으로 4바이트이다.
    • int 는 *p 가 가리키는 곳의 type 이다.

     

    🔔 예) printf 함수의 사용의 다른예

     

    결과

     

     

    🔔 예) short 형의 포인터 변수가 int 형의 데이터를 접근하는 프로그램

     

    결과 : sp++ 에서 sp+1*2 이다 이유는 short는 2byte 이므로 2byte씩 더해진다.

     

    💡 리눅스 vi편집기 명령어
    commed 모드(esc)에서
    gg=G : 전체소스 자동 들여쓰기
    v로 드래그 = : 부분 들여쓰기

     

    🔔 예) 메모리 출력 프로그램 ( hexa view )

    hexa.c
    다운로드

     

    hexa view 소스코드 파일은 위 첨부파일을 다운로드 한다.

     

     

    결과 : iNum(빨간색) B(주황색) A(에메랄드) 메모리에 Little Endian방식 출력

     

     

    🔔 예) main.c 파일을 main.bin 즉 binary 모드로 바꿔 vc++ 컴파일에 실행결과

     

    결과 : 메모리에 실제 저장되어 있는 소스의 형태를 보여줌

     

     

    🔔 예) mian.exe 파일을 main.bin 즉binary 모드로 바꿔 vc++ 컴파일에 실행결과

     

    결과 : "MZ" 파일형식마다 다르게 표기되는 " 매직코드 " 이다.

     

     

     

     

     

    728x90
    반응형
상단으로