2차워배열에서의 arr[i] == *(arr+i) 성립여부
꼬꼬마
질문 제목 :
2차원배열에서의 arr[i] == *(arr+i) 성립여부질문 내용 : int arr[5][2]={1,2,3};
이라는 2차원배열이 있을때
arr[1]=arr+1 이라는 식까지는 이해했습니다.문제는 *(arr+1)인데, 여태배운대로 접근한다면 *(arr+1)은 3..
즉 값이 되야 되는데 어째서 주소값으로 인식되는지 이해가안됩니다.1차원배열에서는
int arr[3]={1,2,3} 이라고했을때 *(arr+2)는 3.. 즉 값으로 인식되었는데,
2차워배열은 어떤원리로 이해해야되는지좀 알려주세요.물론 이유는 모르지만 2차원배열에서 *(arr+i) 컴파일해보면 주소값 출력되는것은 알고있습니다.
-
비내리던날
Rime 님 말씀이 맞습니다.
포인터가 가리키는 \대상체\ 에 대하여 아실 필요가 있습니다.
int a = 7;
int *pa=&a;
여기서 *pa 는 어떻게 해석될까요?
pa가 가리키는 대상체는 int형 변수이기 때문에, *pa 는 int형 변수가 됩니다. 7이 되는것이죠.
위 2차원 배열의 이름인 arr는, 배열 포인터라고 하는것은 아시죠?
(Rime 님께서 더블 포인터 라고 말씀하셨고 물론 더블 포인터의 성질을 많이 가지고 있긴 하지만 조금 -
조으다
2차원 배열이면 arr을 더블 포인터로 보시면 됩니다..
*(arr) 해봐야 그냥 1차원 포인터가 될 뿐이지요.. 결국 주소값입니다.
**arr 해야지. a[0][0]의 값입니다.
다차원 배열이면 다차원 포인터로 보시면 됩니다.
솔직히 3차 이상 쓸일이 없지만요..