티스토리 뷰
2021.03.03.수
배열 요소의 주소와 배열의 주소
int arr[5];
✔ 배열명 arr 자체가 주소로 쓰일 때에는 첫 번째 요소를 가리키므로 arr+1 은 4byte 증가해 다음 요소를 가리킨다.
✔ 반면 배열의 주소인 &arr는 배열의 전체를 가리키므로, &arr+1 은 요소의 개수 x 4byte 증가한다.
✔ 배열의 주소에 정수를 더하는 연산은 가능하지만
✔ 배열에 할당된 메모리 영역을 벗어날 수 있으므로 특별한 경우가 아니라면 사용하지 않는다.
✔ 실행결과를 확인하면 배열의 첫 번째 요소의 주소를 가지는 배열의 주소와 주소 연산자&를 사용한 배열의 주소는 동일하다.
✔ 하지만 +1 연산의 결과는 다른 것을 확인할 수 있다.
✔ 첫 번째 주소를 가지는 배열명의 주소는 +1 연산하게 되면, 1x4byte만큼 증가해서 두 번째 요소의 주소를 가리킨다.
✔ 주소 연산자&를 사용한 배열의 주소는 +1 연산하게 되면, 배열의 크기만큼 증가하게 되어
총 1x20byte 증가해서 배열의 마지막 번지를 의미하는 주소를 가리킨다.
[참고] 한빛미디어-혼자 공부하는 C언어 유튜브 강의 / 엘리스 트랙-혼자 공부하는 C언어 / 길벗-C언어 코딩 도장 / 위키백과
'BackEnd > C' 카테고리의 다른 글
[20일차] 5. 함수 포인터/void 포인터 (0) | 2021.03.03 |
---|---|
[20일차] 4. 2차원 배열과 배열 포인터 (0) | 2021.03.03 |
[20일차] 2. 이중 포인터의 활용 (0) | 2021.03.03 |
[20일차] 1. 이중 포인터 (0) | 2021.03.03 |
[19일차] 3. 포인터 배열 복습 예제 (0) | 2021.03.02 |
댓글