C_C++

배열이름과 포인터

bluedevil77 2010. 11. 20. 21:17

포인터 = 주소값 + 자료형

배열이름 = 주소값 + 자료형(상수)

즉 배열이름도 포인터이다. 단 상수포인터이다.

널포인트(null) : int* ptr=0  =>  int형 포인터 ptr : 4바이트
                      char* ptr=0  =>  char형 포인터 ptr : 0바이트
                      double* ptr=0  =>  double형 포인터 ptr : 8바이트

결론 - arr이 "포인터"이거나 "배열이름"인 경우 : arr[i] == *(arr+i) 
          ex) pArr[0] == *pArr == *(pArr + 0)
               => 배열의 인덱스연산은 포인터연산이 가능



---------------------------------------------------

/* two_same.c */
#include <stdio.h>

int main(void)
{
int arr[2]={1, 2};
int* pArr=arr;

//배열 이름을 통한 출력.
printf("%d, %d \n", arr[0], *(arr+1));

printf("%d, %d \n", *(arr+0), arr[1]);  //  arr[i]==*(arr+i)

//포인터 변수를 통한 출력.
printf("%d, %d \n", pArr[0], *(pArr+1));

return 0;
}


*결과물