본문으로 건너뛰기

배열

배열의 개념

  • 동일한 자료형을 가진 데이터들을 동일한 이름으로 저장한 것
    • 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};
    • 검색 : 행과 열의 값에 따라 검색