| [ 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~~~~~~~~~~~~~~~~~~~~~~~~~~ 앗 이런 놀라운 일이 석기시대에는 꿈도 못꾸어본 일들이 정말 돌도끼가지고 티라노우스와 싸우던게 엊그제 같은데 |