• 2022. 5. 17.

    by. 데브촙

    반응형

    포인터가 가리키는 대상의 크기

    - 포인터 변수를 선언할 때 * 연산자 앞에 적는 자료형은 포인터 변수가 가리키는 대상의 크기를 의미

    - 포인터 변수가 가리키는 대상의 자료형과 포인터 변수 선언 시 적는 자료형을 동일하게 지정하는 것이 일반적

    포인터가 가리킬 수 있는 크기와 실제 대상의 크기가 다른 경우

    - 포인터가 가리킬 수 있는 크기와 실제 대상의 크기가 다를 수 있다

    - 프로그래머가 의도적으로 두 크기를 다르게 사용하는 경우도 있다

    int data = 0;
    short *p = (short *)&data;	// 포인터 변수가 가리킬 수 있는 크기는 2바이트지만 4바이트 크기의 data 변수를 가리킬 수 있다

    int 형 변수에 저장된 값을 1바이트 단위로 출력하기 - ex1

    #include <stdio.h>
    void main()
    {
    	int data = 0x12345678;
    	char *p = (char *)&data;
    	// 4바이트 데이터를 바이트 단위로 값을 출력하기 위해 4번 반복
    	for(i = 0; i < 4; i++)
    	{
    		printf(“%X, ”, *p);	//p가 가진 주소부터 1바이트 크기만 사용
    		p++;			//p가 가리킬 수 있는 크기(1바이트)만큼 주소가 증가
    	}
    }

     

    int 형 변수에 저장된 값을 1바이트 단위로 출력하기 ex2 (위와 결과는 동일)

    #include <stdio.h>
    void main()
    {
    	int data = 0x12345678;
    	char *p = (char *)&data;
    	// 4바이트 데이터를 바이트 단위로 값을 출력하기 위해 4번 반복
    	for(i = 0; ii < 4; ii++)
    	{
    	// index addressing
    	// 첫 바이트는 *(p+0), 두 번째 바이트는 *(p+1) ...
    		printf(“%X, ”, *(p + i ));	//p의 주소 값을 변경하지 않고, data 변수의 값을 1바이트씩 출력
    	}
    }
    반응형

    'C' 카테고리의 다른 글

    void * 형 포인터  (0) 2022.05.18
    포인터 변수의 주소 연산  (0) 2022.05.16
    포인터와 const 키워드  (0) 2022.05.15