CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): mrgid (고 인 돌)
날 짜 (Date): 1995년10월18일(수) 02시07분51초 KST
제 목(Title): [re] C의 포인터 질문..  (parkeb님께)
zippo[4][5]라고 선언했다면
 *zippo 하면 zippo[0]의 값을 말합니다.
그런데 어드레스가 출력이 되었다구요?
 당연하죠.... zippo[0]은 zippo[0][0]을 가리키고 있으니까요.
zippo[x][x]라고 선언하면 2차원 배열입니다
2차원 배열이라는 것은 최종데이타를 찾기위해서는 2번의 어드레스 값을
받은 후에야만 원하는 데이타에 도달할 수 있는겁니다.

                  |
                  v
&zippo           zippo         zippo[0]         zippo[0][0]
                               (== *zippo)      (== **zippo)
Address          Address       Address          data

배열과 포인터, 이 둘의 사용상의 의미는 같습니다.
하지만 배열은 초기치를 갖는다는 것이구...(최종 데이타의 자리까지 확보)
포인터의 경우는 이름만 메모리상의 공간을 할당받습니다.
(zippo의 경우에서 **zippo라구 선언한 경우 화살표 자리만..)

글쎄요 ... 배열과 포인터의 문제를 여기서 따지는 것은 너무 힘들구요..
차라리 잘 나가는 C언어 설명서나 주위 잘하는 분의 조언을 듣는 것이
현명한 방법이라고 생각되는 군요...

밑에 프로그램은 설명이 될까하고 첨부합니다. 메일루 받아서 한번
실행해 보세요...
(만일 cc로 컴파일링할 경우 -- "point.c", line 15: warning:.. -- 라는
경고가 나오는데 무시하세요..그이유도 물어보세요 아는 분께..히히)

                                그럼 이만.

---------------------------------------------------------------------
#include <stdio.h>

char dump[5][5]={
        "My  ",
        "nick",
        "name",
        " is ",
        "GID."
};

main()
{
        int i,j;

        printf("dump\'s ADDRESS : %d\n",&dump);
        printf("dump[]\'s ADDRESS : %d\n",dump);
        for(i=0;i<5;i++){
                printf("dump[%d][]\'s ADDRESS(==\
                           *(dump+%d)): %d",i,i,dump[i]);
                printf("\t ---> [%s]\n",dump[i]);
        }
        for(i=0;i<5;i++)
                for(j=0;j<5;j++)
                        printf("dump[%d][%d]\'s VALUE(==\
                           *(*(dump+%d)+%d)): %c\n",i,j,i,j,dump[i][j]);

        printf("dump's stored form : \n");
        for(i=0;i<25;i++)
                printf("%c",*(*dump+i));
        putchar('\n');

}
----------------------------------------------------------------------


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~O O~~~~~~~~~~~~~~~~~~~~~~~~~~

    앗 이런 놀라운 일이 석기시대에는 꿈도 못꾸어본 일들이
      정말 돌도끼가지고 티라노우스와 싸우던게 엊그제 같은데
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.