본문 바로가기

Let's Study/Pointer

4. sha == sha[0] == &sha[0][0]

3. 배열포인터에서

int sha[3][2];

int (*psha)[2];

psha = sha일 때 배열 sha는 배열의 첫번째 주소를 가리킨다고 했었습니다.

 

그렇다면

 

sha == sha[0] == &sha[0][0]

 

이건 맞는 문장일까요?

 

 

 

맞는 문장이네요.

 

하지만 주소만 보고 정말 저 문장이 똑같다고 할 수 있을까요.

 

sha는 전체 배열을 뜻하고 sha[0]은 0행 전체를, sha[0][0]은 [0][0] 하나를 가리키고 있습니다.

 

 

 

 

 

 

 

그래서 sha는 3 x 2 x 4 인 24가 나오고

sha[0]은 2 x 4

sha[0][0]은 4가 나옵니다.

 

이로써

sha == sha[0] == &sha[0][0] 는 가리키는 주소만 같을 뿐 완전히 다르다는 걸 알게 됬습니다.

'Let's Study > Pointer' 카테고리의 다른 글

5. *p와 p[]의 차이.  (2) 2013.05.07
3. 배열포인터, 이젠 아무대나 *쓰지말자!  (0) 2013.03.22
2. 포인터가 4바이트인 이유  (1) 2013.03.21
1. *의 두가지 의미  (0) 2013.03.21