준승박 2021. 7. 27. 18:59

배열

#선언과 초기화

1. 배열 이해
1) 정의
동인한 이름으로 참조되는 연속된 메머리에 할당된 자료구조
같은 데이터 타입을 묶어서 하나의 공간처럼 사용할 수 있는 자료 구조

2) 효과
많은 수의 변수 이름을 생성할 필요가 없음
동일한 이름을 사용하므로 반복문으로 구현하기가 용이함

3) 용어
요소 : 배열을 구성하는 각 항목
배열명 : 전체 공간에 대한 대표 이름(변수명)
크기 : 배열요소의 개수
첨자(index) : 각 요소에 부여되는 위치 정보

2. 선언
데이터 타입 배열명[크기];

배열크기
  • 양수의 정수, 매그로 상수, 관련 연산식으로 지정
  • 변수, const 상수 불가

3. 참조
각 요소에 대한 참조는 index를 이용
0 ~ size-1
배열명[인덱스]
범위 밖의 요소를 참조하는 경우 실행 오류가 발생

4. 초기화
  • 형식 : 데이터 타입 배열명[크기] = {초기값, 초기값2, 초기값3 ......};
  • 각 요소는 순서대로 인덱스 0부터 초기화
  • 배열 크기보다 초기화 요소수가 적으면 나머지는 0으로 초기화
  • 초기화 하지 않은 지역 배열요소는 쓰레기 값을 가짐
  • 선언과 초기화를 같이 하는 경우 배열 크기는 생략 가능


ex)
학생 50명의 국어 성적을 출력하고 학급 평균을 처리하는 프로그램

#include 
int main()
{
     int i, kor[50], sum = 0;
     for (i = 0; i < 50; i++) {
         printf("%d번 학생의 국어점수를 입력하세요");
         scanf("%d", &kor[i]);
         sum += kor[i];
     }

     for (i = 0; i < 50; i++) {
        printf("%d번 학생의 국어점수 : %d", kor[i]);
    }
    printf("학급평균은 %f 이다", sum/50.0);
    reture 0;
}

# 다차원 배열

1. 2차원 배열
배열을 이차원 형태로 확장
2차원은 index가 2개
index 수가 배열의 차수

형식 : 데이터 타입 배열명 [행크기][열크기];
프로그래머는 2차원 형태이나 컴퓨터는 일차원 구조


ex)        
50명 학생의 국어, 영어, 수학, 성적을 처리하는 프로그램

int i, score[50][3];
for(i = 0; i < 50; i++)
    scnanf("%d %d %d, &score[i][0],&score[i][1],&score[i][2],");

for(i = 0; i < 50; i++)
    printf("%d번 학생의 성적 : %d %d %d", i + 1, &score[i][0],&score[i][1],&score[i][2]);
2. 3차원배열
필요에 따라 다차원 배열 선언 가능
데이터 타입 배열명 [면][행][열]
동일한 초기화 방법 사용


ex)        
5개반 50명 학생의 국어, 영어, 수학, 성적을 처리하는 프로그램
#include 
int main()
{
    int i, score[5][50][3];
    for (i = 0; i < 5; i++) {
        printf("반 성적 입력", i++);
        for(j = 0; j < 50; j++)
        scnanf("%d %d %d, &score[i][j][0],&score[i][j][1],&score[i][j][2],");
    }
    reture 0;
}