반응형

배열(Array)은 같은 데이터 type을 연속으로 저장하는 방식을 말합니다.

 

변수 선언 방법

type 변수명[배열크기];

type 변수명[배열크기] = {최기화값1, ... , 초기화값n };

type 변수명[배열크기] = {최기하값1, };

와 같은 형식으로 변수를 선언합니다.

 

 

예제). 변수의 초기화가 없는 경우

int  arr[100];
char str[100];
double data[100];

배열의 index는 0 ~ (배열크기 - 1)까지로 access할 수 있습니다.

 

예제). 100개의 배열에 0 ~ 999까지의 임의의 값으로 채우고 min/max/합/평균 구하기

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    int values[100];
    int sum;
    int i;
    int min, max;
    
    srand(time(NULL));
    
    for(i = 0; i < 100; i++) 
    {
        values[i] = rand() / 1000;
    }
    
    min = 10000;
    max = 0;
    sum = 0;
    for(i = 0; i < 100; i++) 
    {
        sum += values[i];
        if(min > values[i]) {
            min = values[i];
        }
        if(max < values[i]) {
            max = values[i];
        }
    }
    
    printf("min: %d\nmax: %d\nsum: %d\naverage: %.2lf\n", min, max, sum, (double)sum / 100);
    return 0;
}

 

 

예제). 배열 변수의 초기화

int  arr[5] = {1, 2, 3, 4, 5};
int  arr2[100] = {0, };

배열의 초기화는 배열의 크기 만큼의 데이터를 초기화 해야 하므로 전체를 콤마(,)로 구분하여 나열하거나, 0으로 초기화하려면 첫번째 항목의 값만 적고, 콤마(,)만 붙이면 나머지는 0으로 초기화됨을 의미합니다.

 

예제). char 배열의 초기화

char str1[100] = "Hello World.";
char str2[100] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '.', '\x00',};

char 배열은 문자열의 표현 방식 중의 하나이며, str1처럼 따옴표(")와 따옴표(")로 묶어서 문자열 상수 형태로 초기화를 합니다. 또한 str2처럼 다른 타입의 배열 초기화 방식처럼 한 문자씩 나열하는 방식으로 표현할 수 있습니다. 다만 문자열의 끝에 0x00 또는 '\x00' 가 붙어야 문자열의 끝임을 표현합니다.

"Hello World."의 경우 총 12글자로 구성되어 있지만, 끝에 0x00 (또는 '\x00')이 붙어 있으므로 실제 크기는 13바이트가 됩니다.

 

 


다차원 배열 (多次元 配列: Multi-demensional array)

다차원 배열은 배열의 배열을 표현하는 방식을 말하며, 2차원 배열, 3차원 배열, ... 형식으로 부릅니다.

int  arr1[10];          // 단일 배열
int  arr2[10][20];      // 2차원 배열
int  arr3[10][20][15];  // 3차원 배열

위의 배열 선언에서 2차원 이상의 배열을 다차원 배열이라고 합니다.

 

다차원 배열의 초기화

int arr1[3][5] = {
    {10, 20, 30, 40, 50},
    {11, 21, 31, 41, 51},
    {17, 18, 19, 20, 25}
};

int arr2[][5] = {
    {10, 20, 30, 40, 50},
    {11, 21, 31, 41, 51},
    {17, 18, 19, 20, 25}
};

다차원 배열의 초기를 할 때에는 arr1 처럼  배열의 크기를 명확하게 [3][5]처럼 표기를 하거나, arr2처럼 배열의 앞의 크기를 생략할 수 있습니다. { }의 갯수에 의해서 [][5]에서 3을 유추할 수 있기 때문입니다.

 

2차원 배열의 앞배열의 크기는 row의 갯수를 의미하며, 뒤의 배열의 크기는 한 row에 오는 데이터의 수(column의 갯수)를 의미합니다.

 

 

 

 

 

C Programming Language 문법

1. C 프로그래밍 언어는? 2. C언어 개발 환경 (실습 환경) 3. C언어의 컴파일 과정 4. C 소스 파일 구성 5. 주석문(Comment) 6. 식별자 명명 규칙 7. C 프로그래밍의 시작 - 함수 8. 변수와 상수 (정수형) 9. 변..

www.it-note.kr

 

 

반응형

'C언어 > 문법' 카테고리의 다른 글

20. 포인터(Pointer) - Call by value와 Call by Reference  (4) 2019.11.23
19. 포인터(Pointer) - 기초  (2) 2019.11.20
17. 반복문 (do ~ while)  (0) 2019.11.04
16. 반복문 (while)  (2) 2019.11.04
15. 반복문 (for)  (2) 2019.11.03
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,