728x90
반응형
1. 배열이란?
- 배열은 동일한 데이터 타입의 값을 연속된 메모리 공간에 저장하는 자료 구조 입니다.
- 특징
- 인덱스를 사용하여 각 요소에 접근
- 메모리 공간이 연속적으로 할당됨
- 선언 시 크기를 고정해야 함
- 예시 코드
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50};
printf("첫 번째 요소: %d\n", arr[0]); // 10 출력
return 0;
}
2. 배열 선언 및 초기화
- 배열의 선언
데이터형 배열이름[크기];
- 배열 초기화
- 명시적 초기화
- 자동 초기화
#include <stdio.h>
int main() {
int arr1[5] = {1, 2, 3}; // 나머지 요소는 0으로 초기화됨
int arr2[] = {4, 5, 6}; // 크기 생략 가능
printf("arr1[3]: %d\n", arr1[3]); // 0 출력
return 0;
}
3. 배열과 포인터
배열 이름은 첫 번째 요소의 주소를 가리키는 포인터로 동작합니다.
- arr[i] 는 *(arr + i)와 동일
#include <stdio.h>
int main() {
int arr[3] = {1, 2, 3};
int *ptr = arr;
for (int i = 0; i < 3; i++) {
printf("arr[%d] = %d, *(ptr + %d) = %d\n", i, arr[i], i, *(ptr + i));
}
return 0;
}
4. 다차원 배열
- 2차원 배열은 행렬 형태로 데이터를 저장할 수 있음
- 선언과 초기화
int arr[3][2] = {
{1, 2},
{3, 4},
{5, 6}
};
- 예시 코드
#include <stdio.h>
int main() {
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("arr[%d][%d] = %d\n", i, j, arr[i][j]);
}
}
return 0;
}
5. 배열 활용 예제
- 배열 값의 합 계산
#include <stdio.h>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += arr[i];
}
printf("배열 요소의 합: %d\n", sum);
return 0;
}
- 배열 값 정렬
#include <stdio.h>
void sort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
int arr[] = {40, 10, 20, 50, 30};
int size = sizeof(arr) / sizeof(arr[0]);
sort(arr, size);
printf("정렬된 배열: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
6. 배열의 한계와 주의점
- 배열 크기는 정적으로 결정되므로 동적 배열이 필요할 경우 malloc과 같은 메모리 할당 함수 사용
728x90
반응형
'개발 > C' 카테고리의 다른 글
[C언어] 기초 자료구조 - 해시(Hash) (0) | 2025.01.22 |
---|---|
[C언어] 기초 자료구조 - 힙(Heap) (0) | 2025.01.21 |
[C언어] 기초 자료구조 - 큐(Queue) (0) | 2025.01.21 |
[C언어] 기초 자료구조 - 스택(Stack) (0) | 2025.01.21 |
[C언어] 기초 자료구조 - 문자열 (0) | 2025.01.21 |