프로그래밍

 3198, 1/160 회원가입  로그인  
   lawsoul
   안녕하세요 c언어 초보자 도움좀 주세요(3) [C언어]

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3276 [복사]


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. 고요한 밤입니다.ㅎㅎ



  


  Hit : 4539     Date : 2012/01/15 11:33



    
sohun5013 어.. 저거 컴파일은 되도 Access violation(잘못된 주소 접근.. 0주소를 접근했다던가)로 에러나는 거 같은데요.

일단 int ***three에서 one에 접근하는 방법은 **three를 쓰면 됩니다.
**three = *(*three) = *(two) = *two = one 이거든요.

소스 이상한 건 답글로 달겠습니다. 쓰고보니 양이 좀 되네요.
2012/01/16