작성한 질문수
홍정모의 따라하며 배우는 C언어
10.5 2차원 배열과 메모리
작성
·
354
0
int arr_3d[2][3][4] = {
{
{000,001,002,003},
{010,011,012,013},
{020,021,022,023},
},
{100,101,102,103},
{110,111,112,113},
{120,121,122,123},
}
};
이거 큰묶음 2번째목록은 제대로 출력되는데
큰묶음 1번째에서
0 1 2 3
8 9 10 11
16 17 18 19
로 출력되네요 이유가 뭘까요
퀴즈
C 언어에서 표준 배열의 요소들은 메모리에 어떻게 저장될까요?
서로 떨어진 위치에 임의로 저장된다.
링크드 리스트 형태로 연결되어 저장된다.
연속적인(contiguous) 메모리 공간에 저장된다.
스택에 쌓이는 형태로 저장된다.
답변 2
2
앞에 0 때문에 8진수로 인식하는 거 같아용
윗 분 말씀이 맞습니다. 0 으로 시작하는 정수는 8 진수를 뜻합니다.
예를 들어 012 가 10 으로 출력되고 있는데 이는 8진수 12를 (012 의 0 은 8진수다라는 걸 의미하는 것일 뿐이니 8진수로 12 를 뜻하는 숫자가 되겠습니다.) 10진수로 변환한 결과입니다. 1 * 8 + 2 * 1 = 10
여담으로 16진수는 0x 로 시작합니다. (0xAB12 이런식)