-
반응형
2차원 배열
바둑판에 놓여있는 돌의 정보를 저장하려면?
1. 돌 한 개의 정보를 어떤 형식의 변수에 저장할 것인지 결정
1바이트인 char타입의 돌 한 개의 정보를 저장 가능
0: 돌이 놓여있지않음, 1: 검은 돌이 놓여있음, 2: 흰 돌이 놓여있음
2. 바둑판 전체를 저장할 수 있는 메모리 크기를 결정
바둑판은 총 361개(19*19)의 돌을 놓을 수 있다.
1차원으로 표현하면 char data[361];
2차원 배열의 필요성
2차원 공간에 있는 대상은 자신의 위치를 좌표로 나타낼 때 (x좌표, y좌표) 형태로 사용
바둑판에 놓인 바둑돌의 위치 정보도 2차원 형식의 데이터
char data[20];
2차원 배열 선언하기
같은 크기의 변수를 나열해서 적는 것이 불편하기 때문에 배열을 사용해서 크기가 같은 변수들끼리 묶어서 사용
char data1, data2, data3, data4; // 4개의 변수를 개별적으로 선언함 char data[4]; // 4개의 변수를 묶어 1차원 배열로 선언함 // 1차원 배열을 5개 묶으려면? char data1[4], data2[4], data3[4], data4[4], data5[4]; char data[5][4]; //4개짜리 그룹이 5개 있는것
char data[4][5]가 아니라, char data[5][4]로 적는 이유는?
연산자 우선순위 때문. [] 연산자는 동일한 우선순위를 가질 때 왼쪽에서 오른쪽으로 연산수행
char data[5][4]를 메모리에 나열하면?
물리적
논리적
2차원 배열 선언하기 – 행(Y축) 단위로 묶음
char data[4][5];
2차원 배열 선언하기 – 열(X축) 단위로 묶음
char data[5][4];
이 경우 연속된 값을 가져오는 것이 아니기 때문에 비효율적인 연산이 일어남 2차원 배열이 실제 메모리에 저장되는 형태
컴퓨터가 사용하는 메모리는 2차원 개념을 제공하지 않음
배열 문법으로 선언된 메모리는 1차원 형태로 메모리에 저장
소스 코드에서 배열을 2차원 형식으로 사용할 수 있는 이유는?
2차원 배열 초기화하기
char temp1[3] = {1, 2, 3}; char temp2[3] = {4, 5, 6}; char temp[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } }
반응형