본문 바로가기

배열포인터

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] 는 가리키는 주소만 같을 뿐 완전히 다르다는 걸 알게 됬습니다. 더보기
3. 배열포인터, 이젠 아무대나 *쓰지말자! *의 두가지 의미를 설명했을 때, 제일 중요했던 건 1. 초기값을 지정해줄 때의 *는 번지를 가르키는 걸 뜻했고 2. 수식에서의 *는 포인터변수가 가르키는 주소의 값을 리턴한다고 했습니다. 이 두가지는 포인터를 하시면서 반드시 기억해주세요. 오늘은 배열포인터에 대해 글을 쓸게요. 우선, 배열이 뭘까요. 여러분도 다 아시듯 array[3] = {1, 2, 3} 이런식으로 변수 여러개를 편리하게 지정할 수 있죠. 그렇다면 배열의 포인터는? 배열 포인터변수에 배열의 주소값을 넣게 될 경우, 배열의 첫번째 번지를 가르키게 됩니다. array[3]이라면 array[0]을 가르킬 것이고 array[2][3]이라면 array[0][0]을 가르키겠죠? 이런식으로 표현할 수 있겠습니다. (주소크기가 1씩 증가하는건 그냥.. 더보기