Pointer & Array

Programming/C 2006. 10. 4. 11:51
포인터와 배열 (Pointer & Array)

배열에 의한 연산은 포인터를 사용해서 할 수 있다.
포인터를 사용하는 것이 더 빠르다.

int a[10];  // 크기가 10인 배열
int *pa;  // 정수형 포인터

pa = &a[0];  // pa는 a[0]의 포인터
x = *pa  // x는 a[0]과 같은 값
*(pa + 1)  // a[1] 과 같음

a[i]는 *(a + i)와 같다.


번지 연산

/* 포인터의 뺄셈 - 문자열 길이 반환 */
int strlen( char *s ) {
  char *p = s;  // p 초기화 - s 문자열의 처음을 가리킴
  while ( *p != '\0' )
   p++;
  return p - s;  // 비교한 문자의 개수, 문자열의 길이를 나타냄
}

포인터에 대한 정수를 더하거나 뺄 수 있다.
포인터를 0과 비교할 수도 있고 같은 배열내의 두 포인터를 비교할 수도 있다.
포인터에 포인터를 더하거나 뺄 수는 없다.
포인터에 실수를 더하거나 빼서도 안되며 포인터에 곱셈이나 나눗셈을 해서도 안된다.
포인터에는 비트연산을 해서도 안된다.
cast 연산자 없이 어떤 형의 포인터를 다른 형의 포인터로 사용하면 안된다.(void예외)

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

,