ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 포인터 기본
    프로그래밍/C, C++ 2019. 4. 16. 00:00

    포인터

    포인터란 다른 변수나 함수를 가리키기 위해 만들어진것이다.
    따라서 포인터 변수 안에는 가리키는 것의 주소가 들어있다.

    아래는 포인터의 아주 간단한 예제다.

    #include <stdio.h>
    
    int main(){
        int a = 10;
        int *ptr; // 포인터 변수 선언 자료형 * 변수명
        ptr = &a; // 포인터에 a의 주소값 대입
        printf("a의 주소 : %x\n", &a);
        printf("ptr안에 든 값 : %x\n", ptr);
        printf("ptr이 가리키는 것의 값 : %d\n", *ptr);
        //선언이 아닌 곳에서 *은 포인터가 가리키고 있는 것의 값
        return 0;
    }

    실행결과

    a의 주소 : 62fe1c
    ptr안에 든 값 : 62fe1c
    ptr이 가리키는 것의 값 : 10

    메모리 구조


    포인터의 크기

    포인터는 모두 주소를 담고기 때문에 포인터변수의 크기는 시스템에 따라 고정적인다.
    시스템이 32bit인 경우 4바이트, 64바이트인 경우 8바이트를 가진다.

    저는 64bit 운영체제를 사용하기 때문에 8바이트가 나오고
    컴파일러 설정에 따라 4바이트나 8바이트가 나올겁니다.

    #include <stdio.h>
    
    int main(){
        int *iptr;
        double *dptr;
        char *cptr;
        void *vptr;
        printf("int *의 크기 : %d\ndouble *의 크기 : %d\n", sizeof(iptr), sizeof(dptr));
        printf("char *의 크기 : %d\nvoid *의 크기 : %d\n", sizeof(cptr), sizeof(vptr));
        // void 포인터는 를 담을 수 있다 -> 사용 시 형변환이 필요하다
    }

    실행결과

    int *의 크기 : 8
    double *의 크기 : 8
    char *의 크기 : 8
    void *의 크기 : 8

    '프로그래밍 > C, C++' 카테고리의 다른 글

    포인터 타입 캐스팅  (0) 2019.04.30
    함수 포인터  (0) 2019.04.26
    포인터와 배열1  (0) 2019.04.21
    포인터와 배열2  (0) 2019.04.21
    포인터 연산  (0) 2019.04.17

    댓글

Designed by Tistory.