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

C++빌더 Q&A
C++Builder Programming Q&A
[54469] [답변] sizeof 에 포인터를 사용할 경우 포인터 주소의 크기가 나옵니다.
정성훈.해미 [sage5nor] 3354 읽음    2008-09-02 13:12
sizeof()는 해당 내용물의 크기를 구하게 되어 있는데.
이 함수 안에 포인터 변수를 넣는 경우 많이 오해합니다.

아래 소스에서

sizeof(monthName) 는
포인터 monthName의 크기를 나타냅니다.

포인터가 얼마나 큰 메모리의 값을 가리키던간에 포인터의 크기는 정해져(보통 8bit) 있습니다.

실질적으로 해당 시스템에서 지원하는 포인터 주소의 크기가 반환되지요.

포인터는 단지 대상을 가리키는 주소이기 때문입니다.

그래서 1이 나오는게 정상입니다.


앙탈쟁이 님이 쓰신 글 :
: #include <iostream>
: #include <string>
:
: int main()
: {
:     using namespace std;
:     string monthName[12] = {"1","2","3","4","5","6","7","8","9","10","11","12"};
:     int monthSelling[3][sizeof(monthName)];
:     int totalSelling = 0;
:
:     for (int i = 0; i < 3; i++)
:     {
:         cout << i + 1 << "년째\n";
:         for (int j = 0; j < sizeof(monthName); j++)
:         {
:             cout << monthName[j] << "판매량 ";
:             cin >> monthSelling[i][j];
:             totalSelling = totalSelling + monthSelling[i][j];
:         }
:         cout << endl;
:     }
:     cout << totalSelling << endl;
:     return 0;
: }
:
:
: 이런 내용의 코드가 있는데 i의 for문이 1회만 돌고 안도네요.
: 내부 for문의  j < sizeof(monthName) 이 부분을 12와 같은 상수로 바꾸어주니 3번 * 12번 해서 36번이 도는데
:  j < sizeof(monthName) 로 두었을 경우 12번만 수행을 하고 (i = 0일때만 수행) 끝나버립니다
: 왜 그런 차이가 발생하는 것인지 알 수 있을까요?

+ -

관련 글 리스트
54464 sizeof 관련 질문입니다. 앙탈쟁이 1013 2008/09/02
54469     [답변] sizeof 에 포인터를 사용할 경우 포인터 주소의 크기가 나옵니다. 정성훈.해미 3354 2008/09/02
54466     Re:sizeof 관련 질문입니다. 장성호 1324 2008/09/02
54468         Re:Re:sizeof 관련 질문입니다. 앙탈쟁이 1203 2008/09/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.