포인터, 애스크립터 연산자에 대한 질문
앨버트
질문 제목 : 포인터 애스크립터 연산자에 대해음..요약을 못하겠어요.질문 내용 :
열심히 책보면서 공부하고있는데요 문뜩 궁굼한점이 생겨서 글남겨봅니다.
예를들어서
int i=10;
int* p=&i;
라는 예제가 있을때 포인터를 이용해 i를 출력하려면
printf(%d,*p); 처럼 포인터변수앞에 포인터임을 알리기 위한 *(애스크립터)연산자가 붙잔아요
그러고나서 진도가 좀더 나가서 포인터와 배열까지 갔는데
---------------------------------------------------
int arr[3]={0,1,2];
int *p;
ptr=arr;
printf(%d,%d,%d \n,ptr[0],ptr[1],ptr[2]);
과 같은 예제나
--------------------------------------------------
int* ptr=null;
printf(%d,ptr++);
과 같은 예제에서는 포인터임에도 불구하고 왜 애스크립터연산자가 붙지 않는건가요?
눈으로는 이해를하겠는데
정작 머리로는 이해가 안되고 걸리는 부분이라..
제 맘같아서는 ptr[0] 대신 *ptr[0] 일것 같고
ptr++ 대신 *ptr++ 일것 같은데...ㅜㅜ
그 다음 진도를 보니
int arr[2]={1,2];
int* parr=arr;
//생략
//포인터 변수를 통한 출력(포인터를 배열처럼 사용)
printf(%d,%d \n,p[0],*(parr+1));
과 같은 예제가 나오니까 혼동이 더 심해집니다.
이번에는 애스크립터가 붙으니까요 ㅜㅜ
질문이 다소 조잡한데 정리하자면,
포인터를 사용함에 있어서 언제는 *가 붙고 언제는 안붙던데, 그 붙고 안붙고 할때의 경우가 이해가 되지 않습니다.
*가 안붙을때는 왜 안붙어도 되는건지좀 설명해주세요..