|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2835 [복사]
#include <stdio.h>
int main(void)
{
int arr[5]={1, 2, 3, 4, 5};
int* pArr=arr;
printf("%d \n", *pArr);
printf("%d \n", *(++pArr));
printf("%d \n", *(++pArr));
printf("%d \n", *(pArr+1));
printf("%d \n", *(pArr+2));
return 0;
}
아니...왜?!?!?!?!?!?!?!?!?
int* pArr=arr에서
포인터 pArr이 그냥 1이 됩니까...
그래서 int* pArr=arr[0]하니깐 또 GG락 하고...
엔터티가 어쩌구 저쩌고
포인터와 배열은 둘다 주소에 대한 것인데
int* pArr=어쩌고 에서
arr[0] 이나 숫자들이 안되는 이유는 상수이기때문이고 arr이 되는이유는
포인터 pArr에서의 arr은 arr[5]의 arr[0]즉, 1이기 때문에 작동되는건가요??
하지만 포인터가 주소를 나타내서
int* pArr=&a[0]해도 안되던데...
저의 생각들을 정리해보겠습니다.(맞다 아니다로 대답해주세요^^)
1. 포인터 pArr앞에는 주소가 와야되므로 arr이 앞에온다 왜냐하면 배열의 이름도 주소이니깐(포인터이니깐)
2. pArr앞에 a[0]나 숫자가 못 오는 이유는 pArr은 변수들과 상대하기 때문이다
질문은
1. 왜 int* pArr=&a[0]은 안되는지... 왜냐하면 배열 요소의 이름 앞에 & 연산자를 붙이면 주소가 나오지 않나요??
2. 배열의 이름도 포인터라던데 포인터는 주소고 배열의 이름도 주소인데...주소도 변수인가요??
포인터는 변수와 상대한다고 해서.. |
Hit : 4944 Date : 2011/01/04 10:35
|