C 프로그래밍 포인터 이해하기
포인터는 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 = #
int* ptr2 = ptr1;
(*ptr1)++;
(*ptr2)++;
printf("%d \n", num);
return 0;
}
결과값은 12이다.