C/C언어 이론

(7)Array

T_Y 2018. 6. 20. 13:28
반응형

배열 (Array)

1. 정의 : '같은 타입'의 여러 공간을 하나의 변수로 '다루는 것'

> 만들어지는 공간은 '연속'된다. (이어진다.)

2. 선언(생성) : [] 대괄호를 이용한다.

int iArr[5]; // 길이가 5인 int 배열

float fArr[3]; // 길이가 3인 float 배열


3. index (인덱스)

- 배열의 요소 : 생성된 배열의 '각' 저장 공간

- 배열이름[index] 형태로 요소에 접근 (사용)

- 인덱스 = 순서

> 모든 언어에서 '인덱스'는 0부터 시작

> 컴퓨터는 순서를 0부터 센다.

> index = 0 ~ (길이-1)



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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
 
void main()
{
    // 배열 생성
    int iArr1[5];    // 배열 생성. 각 공간(5개의 정수)은 초기화되지 않음. 쓰레기값
    int iArr2[5= {1,2,3,4,5}; // 배열 생성과 동시에 초기화 (순서대로)
                                // int 공간이기 때문에, '정수'
    int iArr3[5= {1,2};    // 뒤에 나머지 공간 3개는 자동으로 0이 대입
    int iArr4[5= {0, }; // 배열 만들때 가장 올바른 방법 (모든 공간을 0)
    int iArr5[]    = {10,20,30,40,50}; // 자동으로 길이가 5가 됨 (컴파일러 역할)
 
    int i = 0// for문에서 사용할 조건변수
 
 
    // 배열 요소 접근
    iArr1[0= 10;    // 첫 번째 요소에 10을 대입!
    iArr1[1= 20;
    iArr1[2= 30;
    iArr1[3= 40;
    iArr1[4= 50;
    // iArr1[5] = 60; // 잘못된 인덱스. 6번째 공간은 없다!!
    // iArr1[-1] = 0; // 인덱스(순서)에는 음수가 없다!!
    //    파이썬에서는 인덱스에 음수를 사용할 수 있다. (참고)
 
    // 인덱스를 통해 공간을 접근한다 = 일반 변수 사용하듯이 똑같이 사용한다.
    /*
        int iNum = 0;
        scanf("%d", &iNum);     --> iNum 공간에 입력된 값을 저장하겠다!
        printf("%d", iNum);  --> iNum 공간의 값을 출력하는데 사용!
        iNum = 10;             --> iNum 공간에 값을 대입하겠다!
        scanf("%d", &iArr[0]);     --> iArr[0] 공간에 입력된 값을 저장하겠다!
        printf("%d", iArr[0]);  --> iArr[0] 공간의 값을 출력하는데 사용!
        iArr[0] = 10;             --> iArr[0] 공간에 값을 대입하겠다!
    */
 
 
    // 배열은 for문과 친하다!! (밀접)
    for( i = 0; i < 5; i++ ) // i : 0,1,2,3,4 수행 / 5 끝
    {
        // 길이 5인 iArr1 배열의 인덱스 범위 : 0,1,2,3,4
        // i 변수는 배열의 인덱스 값으로 사용 --> 배열의 모든 요소를 접근
        iArr1[i] = 100 * (i + 1);
        printf("iArr1[%d] = %d\n", i, iArr1[i]);
    }
 
    // 배열의 크기
                            // 4byte * 5개 = 20byte
    printf("iArr1의 크기 : %d\n"sizeof(iArr1));
 
    // 변수를 선언하려고 만든 지역 (그냥 무조건 진입)
    {
        int iArr[100= {0, }; // 얘도 지역변수
        int iArrLen = 0// 이 변수는 지역이 끝나면 소멸한다.
 
        //                40 / 첫 요소의 크기(4byte) = 10 (배열 길이)
        iArrLen = sizeof(iArr) / sizeof(iArr[0]);
 
        for( i = 0; i < iArrLen; i++ ) // 조건식에 배열 길이! (0~끝)
        {
            iArr[i] = 1 * (i+1);
            printf("iArr[%d] = %d\n", i, iArr[i]);
        }
        // 바람직한 배열과 for문의 사용!
    }
 
 
 
    {
        int i = 0;
        int iScore1 = 10;
        int iScore2 = 20;
        int iScore3 = 30;
        int iScore4 = 30;
        int iScore5 = 30;
        int iScore6 = 30;
        int iScore7 = 30;
        int iScore8 = 30;
        int iScore9 = 30;
        int iScore10 = 30;
 
        int iScore[10= {102030};
        // 배열을 사용하는 이유! (편하게 공간을 다루려고~~)
 
        for(; i < 10; i++)
        {
            iScore[i] = (i+1* 10;
        }
 
        // 각각의 변수 3개를 for문으로 다룬다? --> 말도 안 되는 소리~~
        for(i = 0; i < 3; i++)
        {
            if (i == 0) iScore1 = (i+1* 10;
            else if (i == 1) iScore2 = (i+1* 10;
            else  iScore3 = (i+1* 10;
        }
 
 
    }
 
 
}
cs



      .....  



반응형

'C > C언어 이론' 카테고리의 다른 글

(9)struct  (0) 2018.06.20
(8)Pointer  (0) 2018.06.20
(6)Function  (0) 2018.06.20
(5)Repetitive  (0) 2018.06.20
(4)Conditional  (0) 2018.06.20