C언어의 가장 큰 특징이자 장점이라고 할 수 있는 부분이다. 특정 데이터가 저장된 메모리의 주소를 저장하는 변수라고 할 수 있다. 다른 곳의 주소 그 자체를 가리키기 떄문에 이를 응용하여 다양한 연산을 수행 할 수 있다. 뿐만 아니라 프로그램의 어떠한 위치에서 시행되더라도 특정한 주소를 그대로 이용하기 떄문에 값이 즉시 변경된다는 특징을 가지고 있다.
다른변수가 위치한 그 공간을 바로 접근함으로써 값을 바꾸거나, 바로 처리 할 수 있다.
포인터를 사용할떄는 꼭 *를 사용해야한다. 또한 메인메소드에서 매개변수를 넣어줄때도 &을 사용해야한다.(주소를 가리킬때는 &을 사용하기 떄문이다.)
실제로 swipe함수는 많이 사용되며 잘 이해해야한다. 다양한 운영프로그램을 사용하기도 하면서 해킹할떄도 이용하기도 한다.
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <stdio.h>
// 두 변수의 값을 서로 변환하는 포인터 함수
void swap(int* x, int* y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main(void)
{
int x = 1;
int y = 2;
swap(&x, &y);
printf("x = %d\n y = %d\n", x,y);
return 0;
}
int x = 70;
int *y = &x;
*y = 70;
x = 70;
*y = x;
y = &x;
y의 주소값은 00AA00BB 이지만,
*y의 주소값은 70이 되는 것이다. (왜냐하면 x를 가르킨값이기 때문이다.)