본문 바로가기

카테고리 없음

배열 소개

C 언어에서 배열은 동일한 데이터 타입의 여러 값을 연속적으로 저장하는 자료구조입니다. 배열을 사용하면 관련된 데이터를 묶어서 효율적으로 처리할 수 있습니다. 배열은 C 프로그래밍에서 기본적이고 매우 중요한 개념입니다.

1. 배열의 기본 개념

배열은 같은 데이터 타입의 여러 개의 요소를 연속적으로 저장합니다. 배열의 각 요소는 인덱스를 통해 접근할 수 있으며, 인덱스는 0부터 시작합니다.

2. 배열의 선언과 초기화

배열 선언

배열을 선언할 때는 데이터 타입과 배열의 크기를 지정합니다. 배열의 크기는 배열에 저장할 요소의 개수입니다.

c
코드 복사
int arr[5]; // 정수형 배열, 크기가 5

배열 초기화

배열을 선언하면서 초기화할 수도 있습니다. 초기화하지 않으면 배열의 요소는 불확정 값이 됩니다.

c
코드 복사
int arr[5] = {1, 2, 3, 4, 5}; // 배열의 각 요소를 1, 2, 3, 4, 5로 초기화

배열의 크기를 생략하면 초기화된 값의 개수에 따라 크기가 자동으로 결정됩니다.

c
코드 복사
int arr[] = {1, 2, 3, 4, 5}; // 배열의 크기가 5로 자동 결정

3. 배열 요소 접근

배열의 각 요소는 인덱스를 사용하여 접근합니다. 인덱스는 0부터 시작하여 배열의 크기 - 1까지의 값을 가집니다.

c
코드 복사
#include <stdio.h> int main() { int arr[5] = {10, 20, 30, 40, 50}; printf("첫 번째 요소: %d\n", arr[0]); // 출력: 10 printf("세 번째 요소: %d\n", arr[2]); // 출력: 30 return 0; }

4. 다차원 배열

C 언어는 1차원 배열뿐만 아니라 다차원 배열도 지원합니다. 2차원 배열이 가장 일반적으로 사용되며, 배열의 각 요소는 또 다른 배열입니다.

2차원 배열 선언과 초기화

c
코드 복사
int matrix[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };

2차원 배열 요소 접근

c
코드 복사
#include <stdio.h> int main() { int matrix[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; printf("matrix[1][2] = %d\n", matrix[1][2]); // 출력: 7 // 2차원 배열의 모든 요소 출력 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]); } } return 0; }

3차원 이상의 배열

3차원 배열이나 그 이상의 배열도 선언할 수 있으며, 이들은 각각의 차원이 배열의 배열입니다.

c
코드 복사
int array3D[2][3][4] = { { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, { {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} } };

5. 배열의 크기

배열의 크기는 컴파일 타임에 결정됩니다. 배열의 크기를 초과하여 접근하면 정의되지 않은 동작이 발생할 수 있습니다.

배열 크기 계산

배열의 크기를 계산할 때는 sizeof 연산자를 사용할 수 있습니다.

c
코드 복사
#include <stdio.h> int main() { int arr[10]; printf("배열의 크기: %lu\n", sizeof(arr)); // 배열의 바이트 크기 printf("배열의 요소 개수: %lu\n", sizeof(arr) / sizeof(arr[0])); // 배열의 요소 개수 return 0; }

6. 배열과 포인터

C 언어에서 배열의 이름은 배열의 첫 번째 요소를 가리키는 포인터로 사용될 수 있습니다. 배열을 포인터처럼 사용할 수 있지만, 배열과 포인터는 정확히 동일하지 않습니다.

배열과 포인터의 관계

c
코드 복사
#include <stdio.h> int main() { int arr[3] = {10, 20, 30}; int *ptr = arr; // 배열 이름은 포인터처럼 사용됨 // 포인터를 통해 배열의 요소 접근 for (int i = 0; i < 3; i++) { printf("arr[%d] = %d\n", i, *(ptr + i)); } return 0; }

7. 배열을 인자로 전달

함수를 호출할 때 배열을 인자로 전달할 수 있습니다. 이 때 배열은 포인터로 전달됩니다. 함수에서 배열의 크기를 알고 싶다면, 크기를 별도로 전달해야 합니다.

배열을 인자로 전달하는 함수

c
코드 복사
#include <stdio.h> void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("arr[%d] = %d\n", i, arr[i]); } } int main() { int arr[5] = {1, 2, 3, 4, 5}; printArray(arr, 5); // 배열과 배열의 크기를 인자로 전달 return 0; }