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
[60014] Re:제가 질문을 좀 헤깔리게 썼나보네요 제 본 의도는...
장성호 [nasilso] 1005 읽음    2010-01-27 18:21
아래 둘리.CSIEDA님께서 좋은 자료 링크해주셨는데..

다음과 같이 배열선언하면
      char var[10][3];


3Byte씩 10개 즉 30Byte 메모리가 확보됩니다.

30Byte는 모두 연속되어있구요

님의 질문과 같이 배열인덱스가 맞지 않는 경우라도 메모리가 할당되어있는 부분이면
문제가 발생하지는 않습니다.

    char var[10][3];
    memset(var,' ',sizeof(var));

    var[3][3]='a';  //var[4][0] 에 값이 들어갑니다.
    var[3][4]='b';  //var[4][1]
    var[3][5]='c';  //var[4][2]
    var[3][6]='d';  //var[5][0]  , 여기까진 문제발생하지는 않음

    var[9][3]='e';  // 이렇게 하면 엉뚱한곳에 값이 입력되므로 심각한 문제가 발생할수도 있죠


그럼..

한수동 님이 쓰신 글 :
: 문자열에 대해 여쭈어 본것이 아니라
: char 형이든 int 형이든
: 1차원 배열에 경우 만약 int a[5]; 라고 잡는다면
: a 변수는 4바이트씩 총 5개 연속으로 메모리에 공간이 잡히잖아요.(이것도 올바르게 아느지 잘 모르겠네요;)
:
: 그렇다면 2차원 배열은 어떤식으로 메모리에 공간이 잡히느냐 이것이 궁금한것입니다..
:
: int a[5][3];          라고 잡고서
:     a[3][4] = 100;  이라고 명령해도 a배열 어딘가에 100이라는 값이 저장이 되는
:
: 이런 경우를 발견해서 이렇게질문을 드리는 것입니다
:
:
:
: 한수동 님이 쓰신 글 :
: : 2차원 배열을 쓰면...
: : 주소 잡는게 어떤 식으로 잡히는 거죠?
: : 만약 char s[10][3]; 이라고 하면
: :
: : 주소를
: : 3개씩 10개가 순서대로 잡히나요 아니면
: : 1개씩 10개 잡고 또한번 1개씩 10개 잡고 또한번 1개씩 10개 잡는
: : 이런식인가요?

+ -

관련 글 리스트
59998 2차원 배열을 쓰면... 한수동 1003 2010/01/27
60009     제가 질문을 좀 헤깔리게 썼나보네요 제 본 의도는... 한수동 958 2010/01/27
60014         Re:제가 질문을 좀 헤깔리게 썼나보네요 제 본 의도는... 장성호 1005 2010/01/27
60011         Re:제가 질문을 좀 헤깔리게 썼나보네요 제 본 의도는... 둘리.CSIEDA 972 2010/01/27
60015             감사합니다^^ 한수동 862 2010/01/27
60007     Re:2차원 배열을 쓰면... 둘리.CSIEDA 988 2010/01/27
60005     Re:2차원 배열을 쓰면... locke 1187 2010/01/27
60004     Re:2차원 배열을 쓰면... 김준석 906 2010/01/27
59999     Re:2차원 배열을 쓰면... locke 839 2010/01/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.