문제 9 · 실습 — 요소의 주소와 값 반환
인덱스로 지정한 요소의 주소와 값을 함께 돌려줍니다. 실제 주소값은 실행마다 달라지므로, 여기서는 배열 시작 주소로부터의 **오프셋(바이트)**으로 결정적으로 보여 줍니다.
cpp
#include <iostream>
using namespace std;
// 배열과 (크기보다 작은) 인덱스를 받아 그 요소의 주소와 값을 돌려주는 함수
void findElement(int* list, int index, int** outAddr, int* outValue) {
*outAddr = &list[index]; // 요소의 주소
*outValue = list[index]; // 요소의 값
}
int main() {
int list[5] = {10, 20, 30, 40, 50};
int index = 2;
int* addr;
int value;
findElement(list, index, &addr, &value);
cout << "인덱스 " << index << "의 값 : " << value << endl;
cout << "배열 시작 주소로부터의 오프셋(바이트) : "
<< (char*)addr - (char*)list << endl;
return 0;
}출력은 다음과 같습니다. int가 4바이트이므로 인덱스 2의 오프셋은 2 × 4 = 8입니다.
인덱스 2의 값 : 30
배열 시작 주소로부터의 오프셋(바이트) : 8