Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[4779] Re:포인터 배열과 2차원 배열 비교 입니다. 틀린점 있으면 지적해주세요.
진수.네모 [miman101] 1749 읽음    2004-11-22 04:33
printf("char* str[4]의 크기 : %d\nchar ptr[4][50]의 크기 : %d\n",sizeof *str, sizeof *ptr);   
를 다음과 같이 수정해주세요...

printf("char* str[4]의 크기 : %d\nchar ptr[4][50]의 크기 : %d\n",sizeof str, sizeof ptr);   

결과는 16 , 200 입니다.

가령 변수 int number; 라고 선언을 하면 number의 크기는? 4 겠죠.. 뭐 상황마다 다르겠지만...

그럼 int *ptr; ptr의 크기는? 4겠죠... 모든 포인터의 크기는 4 입니다. 만약 상수를 저장하고자 한다면 그 상수는
ptr 에 저장되는 것이 아니라... ptr이 가르키고 있는 부분에 저장되는 것이 겟죠..

char *str[4]; 는 char 포인터 4개 입니다.. 당연히 16 이겠죠... 머.. 여기에 어떤 내용이 저장되있는지는
중요하지 않습니다... 그 크기는 항상 포인터의 크기가 나올뿐이요...

반면... char ptr[4][50]; 은 엄현히 메모리에 4*50 의 공간확보르 하죠.. 그 주소로 ptr 을 사용하죠 따라서
크기는 200 입니다...



경선 님이 쓰신 글 :
: // char* []와 char [][]의 비교
:
: #include <stdio.h>
:
: void main(void)
: {
:     char* str[4]={"gold",
:                   "silver",
:                   "copper",
:                   "neck"};
:    
:     char ptr[4][50] = {
:         "빨강",
:         "주황",
:         "노랑",
:         "초록"
:     };
:
:     for (int i = 0; i < 4; i++)        // char* str 출력
:         printf("%s\n", str[i]);
:
:     for (int i = 0; i < 4; i++)
:         printf("%s\n", ptr[i]);    // char [][] 출력
:
:     printf("char* str[4]의 크기 : %d\nchar ptr[4][50]의 크기 : %d\n",
:         sizeof *str, sizeof *ptr);   
: // 위의 printf()에서 char* [4]과 char [4][50]의 크기를 비교하려는데 sizeof 표기가 맞는지 모르겠네요. 틀리다면 고쳐주세요. 그리고 char* []가 크기가 더 적은 것으로 추측이 가는데 왜 그런가요?
: }

+ -

관련 글 리스트
4778 포인터 배열과 2차원 배열 비교 입니다. 틀린점 있으면 지적해주세요. 경선 1727 2004/11/21
4779     Re:포인터 배열과 2차원 배열 비교 입니다. 틀린점 있으면 지적해주세요. 진수.네모 1749 2004/11/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.