coding/C언어

C 프로그래밍 포인터 이해하기

codingdoeun 2021. 11. 16. 01:34

포인터는 C언어가 Low레벌 언어의 특성을 지니게 해준 녀석이다. 왜냐하면 포인터를 이용하면 메모리에 직접 접근이 가능하기 때문이다.

 

포인터 변수란 메모리의 주소 값을 저장하기 위한 변수이다.

 

* 포인터 변수와 & 연산자에 대해서 알아보자!

 

int main(void)

{

     int num = 7;

     int * pnum.;  //포인터 변수 pnum의 선언

     pnum = # //num의 주소 값을 포인터 변수 pnum에 저장

}

 

* pnum = 20;

printf("%d", *pnum);

위의 코드를 해석하면 다음과 같다.

"포인터 변수 pnum이 가리키는 메모리 공간인 변수 num에 정수 20을 저장해라!"
"포인터 변수 pnum이 가리키는 메모리 공간인 변수 num에 저장된 값을 출력해라!"

 

예제를 통해서 더 이해해보자.

 

#include<stdio.h>

int main(void)
{
    int num1 = 100, num2 = 200;
    int* pnum;

    pnum = &num1; //포인터 pnum이  num1을 가리킴
    (*pnum) += 30; //num1+=30과 동일

    pnum = &num2; //포인터 pnum이 이제 num2를 가리킴
    (*pnum) -= 30; //num2-=30;과 동일

    printf("num1:%d, num2:%d \n", num1, num2);
    return 0;
}

 

결과값은 

 

 

#include<stdio.h>

int main(void)
{
    int num = 10;
    int* ptr1 = &num;
    int* ptr2 = ptr1;

    (*ptr1)++;
    (*ptr2)++;
    printf("%d \n", num);
    return 0;

}

 

결과값은 12이다.