[C/C++] 배열을 이용한 장난
Posted on 2008/03/31 01:51
Filed Under Computer languages
이 글은 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차원 배열에서 인덱스의 범위, 그리고 배열의 메모리 공간을 이해하시면 간단하게 해결할 수 있는 문제입니다.
첫번째 대입과 두번째 대입은 성향이 완전히 틀리죠.
둘다 잘못된것 처럼 보이지만 실제로 잘못된건 두번째 대입문입니다.
아마 두번째는 되는사람도 있고 안되는 사람도 있을듯 하네요.
(제가 테스트 한 곳에서는 다 되었습니다. 배운 지식으로는 분명 에러가 나야 정상인데 어째서 되는 것일까요 ^^)
첫번째 대입문은 사람이 보기엔 잘못되었지만 컴퓨터가 보기엔 문제가 없는 구문이지요 :)
"배열의 메모리는 연속적이다" , "배열 기호는 포인터 연산이다" 라는 두가지 조건때문에 가능한 형태죠.
이차원배열을 동적할당한 경우는 메모리가 연속적이지 않기 때문에 안됩니다.
마지막으로 실제 코딩할때는 사용하지는 마세요. -_-;
'Computer languages' 카테고리의 다른 글
| [C/C++] 클래스에서 함수포인터 배열 만들고 사용하기 (8) | 2008/04/25 |
|---|---|
| [VisualStudio] Visual C++ 2008 feature pack released (1) | 2008/04/08 |
| [C/C++] 배열을 이용한 장난 (1) | 2008/03/31 |
| [VisualStudio] 비주얼 스튜디오 C++ 에러 검출하기 (GetLastError) (2) | 2008/03/01 |
| [C/C++] 배열이야기 (0) | 2008/02/29 |
| [C/C++] 1차원 배열을 2차원 배열로 복사하기 (0) | 2008/02/28 |




댓글을 달아 주세요
유기농코더 2012/03/06 12:07 댓글주소 수정/삭제 댓글쓰기
클래스 타입 확인 하는 글 보다가 포스팅이 많아서 구경하고 있었어요
런 시켜보진 않았는데, a[10][10]으로 선언했는데 [10][10]번째가 먹혀요????
[9][9]가 맥시멈 아닌가요????@_@