Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

냥집사의 개발일지

C언어 - 배열 (Array) : 배열의 선언 & 초기화 본문

C언어

C언어 - 배열 (Array) : 배열의 선언 & 초기화

깅햄찌 2022. 9. 5. 21:06
반응형

 

안녕하세요~ 오늘은 배열에 대해서 정리해보려 합니다.

C언어를 처음 배울 때 포기하게 되는 부분 중 하나인데요. 

알기 쉽게 예제를 보며 공부해봅시다~

 

1. 배열의 선언

아래 코드처럼 배열을 선언하기 위해서는 "자료형 배열이름[배열 크기]" 를 적어주면 됩니다. 

int arr[3];     // data type : int, array name : arr, array size : 3
double arr2[6]; // data type : double, array name : arr2, array size : 6

 

2. 배열 초기화

아래 코드처럼 배열을 선언한 뒤 중괄호 안에 초기값을 나열하면 됩니다. 

int arr[3] = {0,1,2};     // data type : int, array name : arr, array size : 3

 

아래 코드를 입력해주어 배열이 잘 초기화 되었는지 확인해보겠습니다.

(중요!!) 배열의 요소는 배열의 크기 -1까지 접근 가능합니다!!

ex) int arr[5]; 로 선언 시 arr[0]부터 arr[4]까지 접근 가능

 

 

#include <stdio.h>

int main(){
    int arr[3] = {0,1,2};     // data type : int, array name : arr, array size : 3
    for(int i=0; i<3; ++i){
        printf("arr[%d] : %d\n", i, arr[i]); //print arr[0], arr[1], arr[2], respectively
    }
    return 0;
}

 

의도한 대로 arr[0]에 0, arr[1]에 1, arr[2]에 2 값이 들어갔습니다.

중괄호 안에 초깃값을 나열하면 앞에서부터 "차례로" 초기화되는 것을 확인할 수 있었습니다. 

 

여기서 질문!!

만약 중괄호 안에 초깃값이 배열의 크기보다 작으면 남은 배열의 요소에는 어떤 값이 들어가게 될까요?

int arr[6] = {0,1,2};     // data type : int, array name : arr, array size : 6

남은 배열의 요소에는 0으로 초기화 됩니다!!

 

여기서 질문22!!

 배열의 크기보다 큰 배열 요소  접근하면 어떻게 되나요?

배열의 크기 6보다 큰 배열 인덱스 9까지 출력해보겠습니다. 

#include <stdio.h>

int main(){
    int arr[6] = {0,1,2};     // data type : int, array name : arr, array size : 6
    for(int i=0; i<10; ++i){
        printf("arr[%d] : %d\n", i, arr[i]);
    }
    return 0;
}

 

arr[6]부터 arr[9]까지는 임의의 쓰레기 값이 들어간 것을 확인할 수 있습니다.

 

여기서 컴파일 오류가 왜 안나지 생각하시는 분들도 있을 거 같은데요!!

컴파일 오류가 안나는 이유는 arr[index]는 주소를 표현하는 문법으로 해당 주소에 대한 유효성 검사는

Compiler가 진행하지 않기 때문입니다. 따라서 개발자분들이 직접 예외처리가 꼭 필요한 부분입니다!!

 

추가로 배열 초기화하는 또 다른 방법!!

아래 코드처럼 배열의 선언과 초기화가 동시에 이뤄질 때는 배열의 크기를 생략 가능합니다.

Compiler가 배열의 크기를 결정해주기 때문입니다!!

int arr[] = {0,1,2};     // data type : int, array name : arr, array size : 3

 

배열을 출력할 때 빠질 수 없는 연산자가 있죠? 바로 sizeof인데요!

#include <stdio.h>

int main(){
    int arr[] = {0,1,2};     // data type : int, array name : arr, array size : 3
    for(int i=0; i<sizeof(arr)/sizeof(arr[0]); ++i){
        printf("arr[%d] : %d\n", i, arr[i]);
    }
    printf("sizeof(arr) : %d byte\n", sizeof(arr));
    printf("sizeof(arr) : %d byte\n", sizeof(arr[0]));
    return 0;
}

 

sizeof는 파라미터의 크기를 반환하는 연산자입니다.

배열 총 요소 개수 = 배열의 크기 / 배열 요소의 크기이니까 반복문 조건식으로 이용하면 

sizeof 연산자를 이용하여 배열의 요소를 모두 출력할 수 있겠죠?

 

오늘은 배열에 대해서 정리해보았습니다.

배열의 선언, 배열의 초기화를 중점적으로 알아보았는데요.

워낙 배열의 범위가 넓은 만큼 다음 포스팅에서도 배열에 대해 더 알아보도록 하겠습니다. 그럼 좋은 하루 보내세요~

 

 

Comments