배열
배열의 개념
- 동일한 자료형을 가진 데이터들을 동일한 이름으로 저장한 것
int score1, score2, score3... score10
=>int score[10]
1차원 배열
검색
-
정수(int)타입으로 5명의 점수(score) 100, 99, 88, 100, 90을 저장하는 배열 score2를 선언하고 검색하기
-
선언 :
int score2[5] = {100, 99, 88, 100, 90};
-
검색 : 인덱스를 사용하며 인덱스는 0~(n-1) 까지임
printf("score2[0] = %d\n", score2[0]); // 100
printf("score2[1] = %d\n", score2[1]); // 99
printf("score2[2] = %d\n", score2[2]); // 88
printf("score2[3] = %d\n", score2[3]); // 100
printf("score2[4] = %d\n", score2[4]); // 90
-
다양한 배열의 접근방법
height[0] = 155;
변경 가능height[0] = height[1];
변경 가능height[i] = 155;
변경 가능height[i+1] = 155;
변경 가능- 배열 의 인덱스에 수식이나, 변수가 들어와도 관계 없음
- 하지만, 인덱스의 범위(0~n-1)에서 벗어나면 치명적인 오류가 발생할 수 있음
sizeof 함수
int a[]={1, 2, 3, 4, 5};
과 같이, 배열의 크기를 설정하지 않은 경우, sizeof를 사용하여 배열의 크기를 구할 수 있음
#include <stdio.h>
int main(void) {
int a[] = {1, 2, 3, 4};
int i, j;
i = sizeof(a) / sizeof(a[0]);
// sizeof(a) : 배열 a의 크기 == 4byte * 4 = 16
// sizeof(a[0]) : 배열 a의 첫 번째 요소의 크기 == 4byte
// i = 16 / 4
// i = 4
for (j = 0; j < i; j++) {
printf("a[%d] = %d\n", j, a[j]);
}
return 0;
}
2차원 배열
선언
int score[3][4];
: 3행 4열의 배열 선언- int: 데이터 타입
- score: 배열 이름
- [3] : 행의 크기
- [4] : 열의 크기
- 배열 선언 시 행의 크기는 삭제 가능하나, 열의 크기는 반드시 적어야 함
초기화
int num[2][2] = {
{1, 2},
{3, 4}
};
int num[2][2] = {1, 2, 3, 4};
int num[2][2] = {0}; // 모든 요소를 0으로 초기화
int num[2][2] = {1,2,3}; // 1,2,3으로 초기화
int num[][2] = {1, 2, 3, 4}; // 1,2,3,4로 초기화
선언 및 초기화
-
정수(int)타입으로 3개 학과의 각 30명 점수를 저장하는 배열 score1
int score1[3][30];
-
실수(float)타입으로 10명의 키와 몸무게 두 개 항목의 값을 저장하는 배열 health
float health[10][2];
-
정수(int)타입으로 3명의 총점과 평균을 저장하는 배열 score2
int score[3][2] = {{200, 100}, {180, 90}, {150, 75}};
-
실수(float) 타입으로 10명의 키와 몸무게 두 개 항목을 모두 0으로 초기화하는 배열 health2
float health2[10][2] = {0};
2차원 배열의 검색
-
정수(int)타입으로 3명의 총점과 평균점수를 저장하는 배열 score2를 선언하고 검색하기
(1번: 200, 100 / 2번: 180, 90 / 3번: 150, 75)- 선언 :
int score2[3][2] = {{200, 100}, {180, 90}, {150, 75}};
또는int score2[3][2] = {200, 100, 180, 90, 150, 75};
- 검색 : 행과 열의 값에 따라 검색
- 선언 :