우리는 포인터를 통해서 저배열안에 있는 인스턴스중에서 55와 22를 출력해야한다.
int main(void) {
int numArr[5] = { 11, 22, 33,44,55 };
int* numPtra;
void* ptr;
numPtra = &numArr[2];
ptr = numArr;
printf("%d\n",*(numPtra+2));
//numPtra는 numArr의 3번째칸의 주소를 가지고 있으므로, 55을 출력하려면 그 주소에서 +2를 해야한다.
printf("%d\n", *((int*)ptr+1));
// ptr은 numArr의 주소를 가지고 있으므로 그리고 몇번째 칸에 있는지 알려면 int로 추적이 가능하니까 일단 먼저 (int*)로 형변환을 한다.
// 그리고 22는 2번째칸에 있으므로 0+1해야지 2번째 칸인 22값을 꺼내올수있다.
return 0;
}
여기서 5번쨰 칸을 출력하려면 이미 2를가리킨(3번쨰칸)numPtra에 2를 더해줘야한다. 그리고 22를 출력하려면 포인터로 지정되어있지않은 값 ptr을 (int*)로 포인터화로 하고 포인터화로 된 ptr에다가 1을 더해준 포인터 값으로 구하면된다.
'C > 포인터' 카테고리의 다른 글
포인터 사용시 주의해야할 점 (0) | 2019.12.05 |
---|---|
함수와 포인터 (0) | 2019.12.05 |
포인터 매개변수에 대해 (0) | 2019.08.12 |