C언어 배열과 포인터 1차원 배열

    2018-02-05 17:48:31 작성

    배열이란, 동일한 자료형의 데이터가 순서를 갖고 나열되어 있는 집합입니다.
    배열을 사용하면 동일한 이름에 첨자(인덱스)로 접근할수 있어, 데이터의 처리가 매우 수월합니다.

    배열의 선언

    배열선언에 필요한 사항은 3가지가 있습니다.

    • 배열의 이름
    • 자료형
    • 배열의 길이정보

    #include <stdio.h>
    
    int main(void) {
        int i, // 반복문에 사용될 변수
            len; // 배열의 길이정보를 저장할 변수
        int arr[3]; // int 자료형 3개를 저장 할 배열 arr 선언
        arr[0] = 10; // 배열의 1번째 요소 초기화
        arr[1] = 20; // 배열의 2번째 요소 초기화
        arr[2] = 30; // 배열의 3번째 요소 초기화
    
        len = sizeof(arr); // arr 길이
    
        printf("arr의 크기는 %d\n", len);
        for (i = 0; i < len / sizeof(int); i++) {
            printf("arr배열의 %d번째 요소 = %d\n", i + 1, arr[i]);
        }
        return 0;
    }


    배열 요소의 접근은 배열이름[첨자]의 형식으로 접근할 수있습니다.
    C언어에서 배열의 첨자는 0부터 시작합니다.
    배열의 길이는 배열요소의 개수 * 자료형의 크기 입니다.
    배열요소의 개수는 배열의 길이 / 요소의 크기(자료형의 크기) 입니다.

    배열의 여러가지 선언방법
    int arr[] = { 10,20,30,40,50 };

    배열의 선언과 동시 각 요소를 초기화 하는 방법입니다.
    대입되는 배열의 개수가 5개로 명확하기 때문에 좌항에 배열의 수를 지정하지 않아도 됩니다.

    int arr[7] = { 10,20 };

    배열의 공간은 7개 이고 요소의 값은 2개 뿐일 경우에는 첫번째 두번째 요소는 각각 10과 20으로 초기화되고, 다른 요소들은 0으로 초기화 됩니다.

    배열은 첨자로 데이터를 접근할 수 있어 반복문에 자주 쓰이게 됩니다. 다음은 배열안의 정수를 모두 더하는 예제입니다.

    #include <stdio.h>
    
    int main(void) {
        int arr[] = { 10,2,33,6,13,5 };
        int i, sum = 0;
        int len = sizeof(arr) / sizeof(arr[0]);
        for (i = 0; i < len; i++) {
            sum += arr[i];
        }
        printf("arr 배열 요소의 합 : %d\n", sum);
        return 0;
    }


    sizeof(arr) / sizeof(arr[0])는 배열 전체 길이 / 첫번째 요소의 길이 이므로 배열 자료형이 바뀌어도 항상 배열 요소의 개수를 구할수 있습니다.


    연습문제

    1. 두수를 비교하여 작은수를 반환하는 함수를 정의하세요.
    2. 두수를 비교하여 큰수를 반환하는 매크로 함수를 정의하세요.
    3. 정수 5개를 저장할 수 있는 배열을 선언합니다.
    4. 사용자로부터 5개의 정수를 입력받습니다.
    입력받은 수중 가장 큰수와, 가장 작은수, 입력받은 수의 합을 구하는 프로그램을 작성하세요.