태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

[C/C++] 배열을 이용한 장난

Posted on 2008.03.31 01:51
Filed Under Development

  • 이 글은 Jake 에 의해 www.jakeworld.net 에서 작성되었습니다.

  • 퍼가실 때는 이 박스와 함께 복사해주세요.

거의 한달만에 올리네요 ^^;
이번에는 한번쯤 고려해볼 만한 장난을 해보지요.

char a[10][10];
a[0][10] = 'A';
printf("%c",a[1][0]);
a[10][10] = 'B';
printf("%c",a[9][20]);

이 코드를 수행하면 결과는 :)

배열인덱스가 어떤 역할을 하는지, 그리고 2차원 배열에서 인덱스의 범위, 그리고 배열의 메모리 공간을 이해하시면 간단하게 해결할 수 있는 문제입니다.

첫번째 대입과 두번째 대입은 성향이 완전히 틀리죠.
둘다 잘못된것 처럼 보이지만 실제로 잘못된건 두번째 대입문입니다.
아마 두번째는 되는사람도 있고 안되는 사람도 있을듯 하네요.

(제가 테스트 한 곳에서는 다 되었습니다. 배운 지식으로는 분명 에러가 나야 정상인데 어째서 되는 것일까요 ^^)

첫번째 대입문은 사람이 보기엔 잘못되었지만 컴퓨터가 보기엔 문제가 없는 구문이지요 :)  
"배열의 메모리는 연속적이다" , "배열 기호는 포인터 연산이다" 라는 두가지 조건때문에 가능한 형태죠.
이차원배열을 동적할당한 경우는 메모리가 연속적이지 않기 때문에 안됩니다.

마지막으로 실제 코딩할때는 사용하지는 마세요. -_-;

신고

댓글을 달아 주세요

  1. 유기농코더 2012.03.06 12:07 신고  댓글주소  수정/삭제  댓글쓰기

    클래스 타입 확인 하는 글 보다가 포스팅이 많아서 구경하고 있었어요 :)

    런 시켜보진 않았는데, a[10][10]으로 선언했는데 [10][10]번째가 먹혀요????
    [9][9]가 맥시멈 아닌가요????@_@

About



모바일 페이지 QR 코드

Counter

· Total
: 468,974
· Today
: 82
· Yesterday
: 130


DNS server, DNS service