포인터를 배우기 전에 메모리와 주소에 대해 알아보겠습니다.
대부분의 변수는 모두 메모리에 저장됩니다. 메모리에 저장된 변수는 해당 주소를 활용할 수 있습니다.
변수의 주소를 가져오는 연산자는 주소 참조 연산자 &입니다.
주소 참조 연산자 &를 사용하여 출력한 결과를 보면 %p 형식 지정자를 사용할 경우 변수의 주소가 16진수로 출력되고, %d 형식 지정자를 사용할 경우 10진수로 출력되는 것을 볼 수 있습니다.
배열의 주소는 배열의 첫 번째 원소의 주소를 의미합니다.
배열은 각 원소가 각각의 변수로 볼 수 있으므로 각 원소는 개별적인 주소를 지닙니다.
각 원소의 주소는 배열의 시작 주소에서 배열의 데이터 타입 크기만큼 증가한 위치입니다.
바이트(byte) 단위로 나뉘는 메모리는 연속된 바이트의 모임으로, 각각의 바이트를 구분하기 위해 주소를 사용합니다.
배열은 연속적으로 값이 저장되어 있으므로 정수형 배열의 각 원소의 주소값은 1칸 즉, 4바이트씩 차이가 나는 것을 볼 수 있습니다.
배열은 이름 자체가 전체 배열의 주소를 의미합니다. 따라서 배열 자체의 주소를 구할 때는 &를 사용하여 배열의 첫 번째 원소의 주소를 얻을 수도 있지만 &를 사용하지 않고 그냥 배열의 이름을 사용하면 배열의 주소를 얻을 수 있습니다.
이렇게 얻은 배열 이름의 주소값은 배열의 첫 번째 원소의 주소값입니다.
배열의 각 원소의 주소값을 얻는 또 다른 방법에는 배열의 연산을 활용하는 방법이 있습니다.
배열의 연산으로 주소값을 얻는 방법은 배열 이름이 그 자체로 배열의 주소값이기 때문에 배열의 이름을 그대로 적어주고 뒤에 배열의 몇 번째 원소의 주소를 얻고 싶은지 나타내주면 됩니다.
'프로그래밍 언어 > C언어' 카테고리의 다른 글
[C언어 공부하기] 16. 포인터 함수 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.01 |
---|---|
[C언어 공부하기] 15. 배열과 포인터 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.01 |
[C언어 공부하기] 14. 포인터 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.01 |
[C언어 공부하기] 12. 배열 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.06.30 |
[C언어 공부하기] 11. 함수의 형태 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.06.30 |
[C언어 공부하기] 10. 매개변수와 인수 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.06.29 |
[C언어 공부하기] 9. 함수의 기본 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.06.29 |
[C언어 공부하기] 8. 반복문 - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.06.29 |