상세 컨텐츠

본문 제목

포인터와 배열(1)

C언어강좌

by somiyuralove 2019. 8. 20. 23:09

본문

포인터는 다른 변수의 주소를 그 값으로 가지는 변수입니다.

포인터는 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)

 

 

댓글 영역