이해가 안되는 부분이 있어요
적송
2023.04.01
이해가 안되는 부분이 있어요
밑에 형광생 쳐져 있는 부분이 po+i,*(po+i)); 이게요.
무슨 뜻인지 이해가 안되요. *(po+i)이면 *1 인데 이게 무엇인지 잘 모르겠어요.
그리고 값이 주소에 저장되는 건가요?
질문 내용 :
#include stdio.h
void main()
{
int i;
static int a[10]={1,2,3,4,5,6,7,8,9,10};
int *po;
po=a;
for(i=0;i10;i++)
printf(%d번째 방의 주소) %u, 들어있는 값은 %d \n,i,po+i,*(po+i));
printf(\n);
}
-
Soeun
아 감사합니다. 책에 너무 대충 설명 되어 있어서요 ^^
-
엘보어
po+i값은요 자료형 바이트만큼 주소값을 증가시키는거에요. 예를 들어서 po주소가 1000번지를 가리키고 있었다고 치면 지금 int형 포인터를 선언했기때문에 po+1이되면 4바이트만큼 주소가 증가하게됩니다. 그래서
po+1은 1004번지를 가리키게되겠죠? 그럼 po+2가되면 어떻게될까요? 4바이트 + 4바이트가 증가하게되어
1008번지를 가리키게되겠죠? 이런식으로 주소의 증가를 표시하는게 po+i 즉, 포인터연산이구요.
*(po+i)는 배열이라고 생각하