1. 배열
배열은 연속적 메모리 위치에 저장된 변수들의 집합이다.
배열을 사용하면 같은 데이터 타입의 변수들을 관리할 수 있다.
1.1 배열의 선언
- 데이터타입: 배열에 저장될 데이터 타입 지정
- 배열이름: 배열의 이름
- 배열크기: 배열에 저장할 수 있는 요소의 개수 (상수)
// 기본 구조
데이터타입 배열이름[배열크기];
// 예시
int numbers[5]; // 5개의 정수를 저장할 수 있는 배열
char name[50]; // 50개의 문자를 저장할 수 있는 배열
float scores[10]; // 10개의 실수를 저장할 수 있는 배열
1.2 배열의 초기화
배열은 선언과 동시에 특정 값으로 초기화할 수 있다.
배열 크기를 비워놓으면 초기화할 때 요소 개수만큼 크기가 자동 할당된다.
// 기본 구조
데이터타입 배열이름[배열크기] = [배열요소1, 배열요소2, 배열요소3, .... ];
// 예시
int numbers[5] = {1, 2, 3, 4, 5}; // 5개의 정수로 초기화
char name[] = "John Doe"; // 문자열로 초기화, 배열 크기는 자동으로 9가 됩니다 ('\\0' 문자 포함).
float scores[] = {9.5, 8.5, 7.0}; // 크기를 명시하지 않고 초기화, 배열 크기는 3이 됩니다.
1.3 특별한 초기화 규칙들
배열을 부분적으로 초기화하면 나머지 요소들은 모두 0으로 초기화된다.
int array[5] = {1, 2}; // {1, 2, 0, 0, 0}으로 초기화됩니다.
2. 배열의 사용
2.1 배열 요소 접근
배열의 개별 요소에 접근하려면 인덱스를 사용한다.
인덱스는 배열 내 특정 위치를 가리키며, C언어에서는 0부터 시작된다.
int numArr[10] = {11,22,33,44,55,66,77,88,99,110};
printf("%d\\n", numArr[2]); // 33 출력
2.2 배열 요소 수정
배열의 요소는 인덱스를 사용하여 수정할 수 있다.
int numArr[10] = {11,22,33,44,55,66,77,88,99,110};
numArr[2] = 12
printf("%d\\n", numArr[2]); // 12 출력
2.3 배열과 반복문
배열과 반복문을 결합하여 대량의 데이터를 효율적으로 처리할 수 있다.
#include <stdio.h>
int main()
{
int numArr[10] = {11,22,33,44,55,66,77,88,99,110};
for(int i = 0; i < 10; i++)
{
printf("%d\\n", numArr[i]);
}
return 0;
}
3. 다차원 배열
3.1 2차원 배열 선언
2차원 배열은 데이터를 표 형태로 저장한다.
- data_type: 배열에 저장될 데이터의 타입
- array_name: 배열의 이름
- rows: 배열의 행의 수
- columns: 배열의 열의 수
// 기본 구조
data_type array_name[rows][columns];
// 예시
int numbers[3][2] = {
{1, 2},
{3, 4},
{5, 6}
}; // 3에 접근하려면 numbers[1][0]으로 접근할 수 있다.
이 외에도 3차원 배열도 존재한다.
4. 배열과 함수
배열을 함수에 전달하는 방법은 2가지가 있다.
이름을 사용하여 전달 또는 포인터를 사용항 전달 현재는 이름을 사용하는 방법을 알아보자
4.1 배열의 이름을 사용하여 전달하기
배열의 이름은 배열의 첫 번째 요소를 가리키는 포인터이다.
따라서 함수에 배열 이름을 전달하면 실제로는 배열의 첫 요소의 메모리 주소를 전달하는 것이다.
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\\n");
}
int arr[4] = {1,2,3,4};
printArray(arr,4);
4.2 배열의 수정
배열의 요소를 함수에서 수정하면 Call by Reference 방식이므로 원본 배열 또한 수정된다.
#include <stdio.h>
void Array(int arr[], int size) {
arr[1] = 200;
}
int main()
{
int arr[4] = {1,2,3,4};
for(int i = 0; i < 4; i++)
{
printf("%d ", arr[i]);
}
// 1 2 3 4 출력
Array(arr,4);
for(int i = 0; i < 4; i++)
{
printf("%d ", arr[i]);
}
// 1 200 3 4 출력
return 0;
}