Let's Study/Pointer

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

샤에테 2013. 3. 23. 10:10

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] 는 가리키는 주소만 같을 뿐 완전히 다르다는 걸 알게 됬습니다.