Pointer

Programming/C 2006. 10. 4. 10:59
포인터 (Pointer)

다른 변수의 주소를 그 값으로 가지는 변수이다.
번지를 알아내는 연산자 &를 사용해서 p에 c의 번지를 기억시키는 방법이다.

p = &c

&
연산자는 메모리의 변수나 배열에만 사용할 수 있고, 문자이나 상수 등에는 사용할 수 없다.
*연산자는 그 포인터가 가리키고 있는 변수나 배열변수의 값을 알려준다.

#include <stdio.h>
/* pointer test */
main()
{
  int x = 1, y = 2, z[10];
  int *ip;  // 정수형 데이터의 포인터 선언

  ip = &x;
  printf( "ip= %d\n", ip );  // x의 메모리 주소 할당
  y = *ip;
  printf( "y= %d\n", y );  // *ip 와 x 는 같다.
  *ip = 0;
  printf( "*ip= %d\n", *ip );  // *ip 와 x 는 같다.
  ip = &z[0];
  printf( "ip= %d\n", ip );  // z[0]의 메모리 주소 할당
}
// output
ip= -1345986788
y= 1
*ip= 0
ip= -1345986828

C에서 호출할 때 매개변수는 그 값만 전달되므로(call by value) 호출된 함수에서 호출한 함수의 변수값을 바꾸는 것은 불가능하다. 이를 가능하게 하는 것이 포인터이다.

swap(&a, &b);

void swap( int *px, int *py ) {
  int temp;

  temp = *px;
  *px = *py;
  *py = temp;
}

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,