int main(void)
{
int num1=1, num2=2, num3=3;
int*ptr1=&num1; //num1의 주소값을 int*ptr1 에 저장한다.
int*ptr2=&num2; //num2의 주소값을 int*ptr1 에 저장한다.
int*ptr3=&num3; //num3의 주소값을 int*ptr1 에 저장한다.
int*ptrarr[]={ptr1,ptr2,ptr3}; //int*ptrarr[] 이라는 선언을하고 ptr1,2,3,으로 초기화
int**dptr=ptrarr; //int**dptr 을 언선해서 = ptrarr;의 주소값을 저장한다.
int***tptr=dptr;
printf("%d %d %d \n\n",**tptr[0],**tptr[1],**tptr[2]); //<==문제의 부분
return 0;
}
안녕하세요. c언어 초보 도움좀주세요~
저기 위의 문제의 부분에서.
printf("%d %d %d \n\n",**tptr[0],**tptr[1],**tptr[2]);
위문장의 뜻은 tptr 포인터의 전전단계 그러니까
ptrarr 을 출력하라는 뜻이 아닌가요?
이렇게바꾸면 문제없이 실행이되는데.
printf("%d %d %d \n\n",*tptr[0],*tptr[1],*tptr[2]); <== 포인터* 1개 삭제
이 문장은 dptr을 가르키는 문장이 되겠죠?
c언어에서 더블포인터에 접근방법은 예를들어.
int num;
int*one=#
int**two=one;
int***three=two;
int***three 포인터에서 int*one 포인터로는 한번에 접근이 불가능한가요?
printf("%d %d %d \n\n",**tptr[0],**tptr[1],**tptr[2]);
위 예제 처럼말이죠.
C언어 초보입니다 도와주세요.
PS. 고요한 밤입니다.ㅎㅎ
|