1. 2 차원 배열 배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다. 2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2 개 사용하는 것입니다. 첨자는 행과 열 모두 0 부터 시작합니다. 형식 : 자료형 배열이름 [ 행의개수 ][ 열의개수 ]; 기억공간에 배치되는 방식은 일차원적임 VII. C++ 언어의 2 차원 배열 0열0열 1열1열 2열2열 3열3열 0행0행 A[0][0]A[0][1]A[0][2]A[0][3] 1행1행 A[1][0]A[1][1]A[1][2]A[1][3] 2행2행 A[2][0]A[2][1]A[2][2]A[2][3] A[0][0]A[0][1]A[0][2]A[0][3]A[1][0]A[1][1]A[1][2]A[1][3]A[2][0]A[2][1]A[2][2]A[2][3]
2. 2 차원 배열의 초기화 2 차원 배열도 1 차원 배열과 마찬가지로 초기화를 할 수 있습니다. 예 int M[4]={10,20,30,40}; int A[3][4]={ {10,20,30,40},{110,120,130,140},{210,220,230,240} } 0 번째 행 1 번째 행 2 번째 행 int A[3][4]={10,20,30,40,110,120,130,140,210,220,230,240} int M[4]={0, } // 모든 배열을 0 으로 초기화합니다. int A[3][4]={0, } // 모든 배열을 0 으로 초기화 합니다. 배열의 개수와 초기값 개수가 동일하지 않은 경우에는 초기값의 개수가 적 으면 나머지 배열은 0 으로 초기화, 초기값의 개수가 배열보다 많으면 에러가 발생합니다. VII. C++ 언어의 2 차원 배열
3. 2 차원 배열의 사용예 2 차원 배열을 선언하고 초기값을 주고 각 원소의 값을 출력하는 프로그램 을 작성하시오 ( 다중 for 문을 사용 ) 두개의 행렬의 합을 구하는 프로그램을 작성하시오 세개의 행렬을 나란히 출력하는 프로그램을 작성하시오 2 차원 배열을 사용하여 총합과 평균을 구하는 프로그램을 작성하시오 ( 행과 열의 개수를 매크로 상수로 (#define 사용 ) 정의할 것 ) VII. C++ 언어의 2 차원 배열
4. 2 차원 배열의 주소값 주소값을 사용하기 위하여 포인터 변수를 사용했으며, 주소연산자, & 를 사용하였습니다. 1 차원 배열의 경우 2 차원 배열의 경우 a[3][4] 에 대해서 모든 배열의 주소값을 출력하여 봅시다. 첨자를 생략하여 봅시다. 열의 첨자만을 생략한 a[0], a[1], a[2] 와 행과 열을 모두 생략한 a 를 출력하여 봅시다. a[I]== &a[I][0] 의 포인터변수가 되며, a 또한 포인터 변수이나 지금까지 배운 포인터 변수와는 다릅니다. a, a+1, a+2, *a, *(a+1), *(a+2), **a, **(a+1), **(a+2) 값을 출력하여 비교 하여 보시오. 1 개의 * 를 사용하는 것을 1 차원 포인터 2 개의 *, 즉 ** 를 2 차원 포인터라 고 합니다. ( 배열의 차원과 동일합니다.) VII. C++ 언어의 2 차원 배열 int k; int *p; p=&k; int a[5]={10,20,30,40,50} int *pa; pa=a; // pa=&a[0] 와 동일
5. 2 차원 포인터 1 차원 변수 또는 배열에서는 * 연산자를 한번만 기술하면 주소에 저장된 값이 반환되지만 2 차원 배열에서는 * 연산자를 두 번 기술하여야 주소에 저 장된 값이 반환됩니다. 이와 같이 * 연산자를 두 번 기술하는 변수를 2 차원 포인터라고 합니다. 형식 : 자료형 ** 포인터변수이름 ; 2 차원 포인터의 프로그램 예. VII. C++ 언어의 2 차원 배열
5. 2 차원 배열과 2 차원 포인터 2 차원 배열 a[3][4] 에 대하여 배열명에 더하기 연산, a+1 배열명에서 * 연산자를 한 번 적용하여 더하기 연산 배열명에서 * 연산자를 두 번 적용하여 더하기 연산 포인터 연산자 &, *, +, - & 와 * 연산자는 차원을 높이거나 낮춥니다. + 와 – 는 같은 차원에서 주소값을 증가, 감소 시킵니다. 포인터를 사용하여 2 차원배열의 원소를 출력하여 봅시다. a[r][c]== * ( *(a+r) + c ) VII. C++ 언어의 2 차원 배열
6. 함수의 전달인자로 2 차원 배열을 사용 2 차원 포인터 변수를 인수로 전달하기 위해서는 아래의 형식을 사용합 니다. int (* 포인터변수이름 [ 열의개수 ]) 2 차원 배열의 시작 주소값을 넘겨줍니다. 또 다른 형식 int p[][4] VII. C++ 언어의 2 차원 배열 int a[3][4]; int (*p)[4]; p=a;