포인터 = 주소값 + 자료형
배열이름 = 주소값 + 자료형(상수)
즉 배열이름도 포인터이다. 단 상수포인터이다.
널포인트(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 |