포인터는 다른 변수의 주소를 그 값으로 가지는 변수입니다.
포인터는 C언어에서 많이 이용되는데 경우에 따라서는 포인터를 사용하지 않으면 안되는 경우도 있습니다.
포인터를 잘 사용하면 아주 효율적이고 간결한 프로그램을 작성할 수 있습니다.
아래 포인터의 사용예를 간단하게 들어보겠습니다.
p = &c; => 여기서 &연산자는 번지를 알아내는 연산자입니다. 여기서는 c의 번지를 p에 기억시키는 역활을 합니다.
int x=1, y=2, z[10];
int *ip;
ip = &x;
y = *ip;
*ip = 0;
ip = &z[0];
C에서 함수를 호출할때 매개변수는 그 값만 전달되므로(call by value) 호출된 함수에서 호출한 함수의 변수값을 바꾸는 것은 불가능합니다.
void swap(int *px, int *py)
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}
두개의 값을 swap해주는 위의 swap함수는 포인터를 사용하여 값을 변경할 수 있는데 이러한 방법을 call by reference라고 합니다.
C에서 포인터와 배열은 밀접한 관계가 있으므로 같이 살펴보도록 합니다. 배열에 의한 연산은 포인터를 사용해서 할 수 있으며, 포인터를 사용하는 것이 더 빠르기는 하지만 좀 어렵다는 문제가 있습니다.
int a[10];
int * pa;
pa = &a[0]
x = *pa
a[1] == *(pa+1)
댓글 영역