• 2022. 5. 13.

    by. 데브촙

    반응형
    int addr = 0x0000006C;

    - 일반 변수도 주소를 저장할 수 있으나, 저장된 주소의 메모리에 가서 값을 읽거나 저장할 수 있는 기능은 없다

    - C 언어는 간접 주소 지정 방식으로 동작하는 포인터(Pointer)문법을 제공

    - 자신이 사용하고 싶은 메모리의 주소를 저장하고 있는 메모리가 포인터

    - 포인터 변수는 자료형을 선언하지 않아도 무조건 크기가 4바이트 할당됨

     

    변수가 저장된 메모리 공간의 주소 얻기

    변수의 주소는 프로그램이 실행될 때마다 달라지기 때문에 포인터 변수에 주소를 직접 입력하는 것보다 프로그램 안에 선언한 다른 변수의 주소를 받아와 사용하는 것이 안전

    short birthday;		// short형 변수 선언(2바이트)
    short *ptr;		// 포인터 변수 선언(4바이트)
    
    ptr = &birthday;	// birthday 변수의 주소를 ptr 변수에 대입
    #include <stdio.h>
    void main()
    {
    	short birthday;		// short형 변수 선언(2바이트)
    	short *ptr;		// 포인터 변수 선언(4바이트)
    
    	ptr = &birthday;	// birthday 변수의 주소를 ptr 변수에 대입
    
    	// %p 형식은 메모리 주소를 16진수 형식으로 출력해줌
    	printf(“birthday 변수의 주소는 %p입니다.\n”, ptr);
    }

     

    * 키워드(asterisk)의 또 다른 이름, 번지 지정 연산자

    // 다른 변수의 주소를 사용하여 포인터로 값 대입하기
    # include <stdio.h>
    void main()
    {
    	short birthday;
    	short *ptr = &birthday;		// birthday 변수의 주소를 ptr 변수에 대입
    	*ptr = 0x0412;			// birthday = 0x0412; 와 같은 의미
    	printf(“birthday = %d (0x%04X)\n”, birthday, birthday);
    }
    반응형

    'C' 카테고리의 다른 글

    포인터(Pointer) -2  (0) 2022.05.14
    운영체제의 메모리 관리 방식  (0) 2022.05.12
    2차원 배열 응용  (0) 2022.05.11