배열 a의 전체주소는 과연 어디일까요..?
아시다시피 a[0]의 주소를 가리키고 있습니다...
상식적으로 제일 앞이 대장입니다... 대장 주소를 알면 다른 쫄따구 위치도 아는겁니다...
그걸 언어적으로 표현하면..
&a[0]이 되죠.. &가 해당 변수의 주소를 가리키는 말이니까요...
근데 다른 표현도 있다는겁니다..
이건 규칙인데.. 배열이 a[n]으로 선언되었다면..
그냥 a만 써도... 배열의 첫번째 주소 즉 그 배열의 주소를 가리키게 되는 것입니다..
a[n] 배열의 이름이 a 이거든요.. 대장의 이름을 호명하면
당연히 주소를 말하는 것이라고 알아라.. 라고.. 규칙이 정해져 있습니다..
값 자체는 맞을 겁니다.
printf("0x%x\n",test); --> 배열명은 배열 첫 원소의 포인터
printf("0x%x\n",&test); --> &배열명은 배열 전체에 대한 포인터
둘의 값은 같을거고요. 차이를 보시려면 포인터 연산을 해 보시면 아실 겁니다.
그리고 0x%x 대신 가급적 %p 를 쓰시길...
그림설명...
밑에것이 배열이라고 칩시다..
a[5] => [0][1][2][3][4][5]
배열 a의 전체주소는 과연 어디일까요..?
아시다시피 a[0]의 주소를 가리키고 있습니다...
상식적으로 제일 앞이 대장입니다... 대장 주소를 알면 다른 쫄따구 위치도 아는겁니다...
그걸 언어적으로 표현하면..
&a[0]이 되죠.. &가 해당 변수의 주소를 가리키는 말이니까요...
근데 다른 표현도 있다는겁니다..
이건 규칙인데.. 배열이 a[n]으로 선언되었다면..
그냥 a만 써도... 배열의 첫번째 주소 즉 그 배열의 주소를 가리키게 되는 것입니다..
a[n] 배열의 이름이 a 이거든요.. 대장의 이름을 호명하면
당연히 주소를 말하는 것이라고 알아라.. 라고.. 규칙이 정해져 있습니다..
댓글 달기