ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • c언어 포인터
    Programming/C 2016. 5. 2. 20:20

    포인터

    • 포인터를 이용하면 메모리에 직접 접근이 가능하다.
      • C언어가 Low 레벨 언어의 특성을 지닌다고 이야기하게 만든 장본인
    • C언어에서는 시작번지만을 가지고 위치를 표현한다. 왜냐면 예를 들어 int형 변수는 4바이트이므로 변수의 끝은 쉽게 계산이 가능하기 때문이다.
    • 예)
      • int형 변수 num은 0x12ff76번지에 할당되어 있습니다.
      • 위의 0x12ff76역시 정수이므로 저장이 가능한 값이다. 이 값을 저장하기 위해 마련된 변수가 바로 포인터 변수 이다.
    • 포인터 변수란 메모리의 주소 값을 저장하기 위한 변수이다.
    • '포인터'는 '변수 형태의 포인터'와 '상수 형태의 포인터'를 어우르는 표현인데 대부분이 포인터 변수와 관련이 있어 포인터라 하면 우선 '포인터 변수'를 연상하면 된다.

    포인터 변수와 & 연산자

    정수 7이 저장된 int형 변수 num을 선언하고 이 변수의 주소 값 저장을 위한 포인터 변수 pnum을 선언하자. 그리고 나서 pnum에 변수 num의 주소 값을 저장하자.

    int main(void)
    {
        int num = 7;
        int * pnum;   // 포인터 변수 pnum의 선언  
        pnum = #  // num의 주소 값을 포인터 변수 pnum에 저장  
        ....
    }
    • & 연산자는 오른쪽에 등장하는 피연산자의 주소 값을 반환하는 연산자

    포인터가 가리키는 메모리를 참조하는 * 연산자

    • * 연산자는 포인터가 가리키는 메모리 공간에 접근할 때 사용하는 연산자이다.
    #include <stdio.h>
    
    int main(void)
    {
        int num1 = 10, num2 = 20;
        int * ptr1 = &num1;
        int * ptr2 = &num2;
        int * temp;
    
        (*ptr1) += 10;
        (*ptr2) -= 10;
    
        temp = ptr1;
        ptr1 = ptr2;
        ptr2 = temp;
    
        printf("ptr1이 가리키는 변수에 저장된 값: %d \n", *ptr1);
        printf("ptr2가 가리키는 변수에 저장된 값: %d \n", *ptr2);
    }

    'Programming > C' 카테고리의 다른 글

    C언어 포인터 배열  (0) 2016.05.02
    C언어 변수  (0) 2016.05.02
    1차원 배열  (0) 2016.04.30
    도전 프로그래밍1  (0) 2016.04.30
    함수  (0) 2016.04.30

    댓글

Designed by Tistory.