반응형
배열 (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] = {10, 20, 30}; // 배열을 사용하는 이유! (편하게 공간을 다루려고~~) 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 |