본문 바로가기

C_C++

배열이름과 포인터


포인터 = 주소값 + 자료형

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

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

널포인트(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;
}


*결과물

'C_C++' 카테고리의 다른 글

Call By Value VS. Call By Reference  (0) 2010.11.26
[펌] 유용한 URL  (0) 2010.11.24
* (에스크립터)의 용도  (0) 2010.11.20
*pArr VS. pArr[]  (0) 2010.11.20
포인터의 sizeof 연산 (arr_adder.c)  (0) 2010.11.20