반응형
아래와 같이 2차원 배열 형태로 선언할 수 있다.
그렇다고 실제 메모리 주소값이 저렇게 생긴 것이다 아니다.
메모리 주소값은 아래와 같이 byte가 증가하며, 다음 배열은 그 뒤에 이어서 쭉 증가한다. 실제 구조는 1차원적으로 생겼지만, 컴파일러를 통해 OS에서 이를 마치 2차원으로 간주하여 연산을 가능하도록 도와주는 것이다.
2차원 배열을 선언하고 출력하는 방법.
#include <stdio.h>
/*
2차원배열 초기화 입력되지 않은 곳에는 자동 0 할당
*/
int main()
{
// 2차원 배열의 초기화방법.
// 가로길이에 대한 정보는 반드시 제공해야한다. (세로길이는 없어도 됨)
// 그러면 나머지 길이는 컴파일러가 계산해서 넣음.
int arr1[3][3] = {
{1, 2, 3},
{2, 3, 4},
{4, 5, 6}
};
/*
아래와 같은 형태의 행렬이 만들어짐
[1, 2, 3]
[2, 3, 4]
[4, 5, 6]
*/
int arr2[][3] = {
{1},
{2, 3},
{4, 5, 6}
};
/*
아래와 같은 형태의 행렬이 만들어짐, 없는 곳은 0으로 채워짐
[1, 0, 0]
[2, 3, 0]
[4, 5, 6]
*/
// 호출할때 함수변수는 arr[row][column] 이다.
printf("행렬값 호출하기 arr1 2행 2열 : %d\n", arr1[1][1]);
printf("행렬값 호출하기 arr2 3행 1열 : %d\n", arr2[2][0]);
return 0;
}
(결과)
반응형
(아래는 2차원 배열의 사이즈를 보는 방법)
https://ansan-survivor.tistory.com/902
반응형
'C언어 \ C++ > 포인터 \ 배열' 카테고리의 다른 글
[C언어] 포인터의 포인터 (더블 포인터, 이중 포인터, 삼중 포인터) 이해하기 예제 (2) | 2022.02.19 |
---|---|
[C언어] C언어 3차원 배열 선언 및 초기화 (0) | 2022.02.09 |
[C언어] C언어에서 포인터 Const 선언이 갖게 되는 의미 (0) | 2022.02.07 |
[C언어] 함수의 받는 인자(input)로 배열(array) 전달하기, 배열을 변경하는 함수 (0) | 2022.02.06 |
[C언어] 변수 값 바꾸기 Swap 예제 (포인터 예제 포함) (0) | 2022.02.06 |