1. 배열 보고서


1-1. 배열을 쓰는 이유

배열(arry)이란 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 말한다.

같은 타입의 변수가 아니면 배열을 만들 수 없다.


말로 설명하는 것보다 예들 들어주는게 좋을 것 같아 예시를 준비했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#include<stdlib.h>
int main() {
 
    int a, b, c, d;
    a = 0;
    b = 1;
    c = 2;
    d = 3;
 
    printf("%d %d %d %d\n", a, b, c, d);
    system("pause");
    return 0;
}
cs


우선 배열을 쓰지 않은 코드이다. a,b,c,d 4개의 변수를 하나하나 만들어주고 값을 주는것도 반복해야한다. 

 

하지만 배열을 사용한다면?


1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#include<stdlib.h>
int main() {
 
    int a[4= { 0,1,2,3 };
 
    printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
    system("pause");
    return 0;
}
cs

 

위 두 코드의  결과는 0 1 2 3 으로 같다. 눈으로만 비교해도 배열을 쓴 코드가 더 짧고 간결하다는 것을 알 수 있다.


만약 변수 100개를 선언한다면? 배열을 사용한다면 손쉽게 할 수 있다.

1
2
3
4
5
6
7
8
9
#include<stdio.h>
#include<stdlib.h>
int main() {
 
    int a[100= {0};
    
    system("pause");
    return 0;
}
cs



1-2. 배열의 선언 방법

배열의 선언방법은 간단하다.


타입 배열이름[배열 길이] ;


int score[5]; //int 배열 score를 선언

생성된 배열의 각 저장공간을 '배열의 요소'라고하는데 '배열이름[인덱스]' 형식으로 배열에 접근한다.

인덱스의 범위는 0부터 '배열길이-1'까지 이다.




1-3. 배열의 초기화

배열이 처음 생성될땐 쓰레기값이 저장되어 있기때문에 배열을 사용하려면 사용자가 원하는 수로 초기화 해줘야 한다.

초기화를 해주는 형식은 이렇다.


타입 배열이름[원주소] = {초깃값 목록};


1) int score[5];  //길이가 5인 int 배열 생성

2) score[3]=100; //배열 score의 4번째요소에 100을 저장한다.


이렇게 배열명[원주소]를 사용하여 일일이 배열을 초기화해줌과 동시에 값을 넣는 방법이 있고 for문을 사용하여 하는 방법도 있다.


score[0]=0;                    

score[1]=10;                        

score[2]=20;           ->    for (i=0 ; i<5 ; i++ ){     

score[3]=30;                        score[i] = i * 10;

score[4]=40;                        }


하지만 보통 배열을 선언할때에 0으로 초기화해주는 방식을 사용한다.

score[5]={0};

score배열 5개를 모두 0으로 초기화 한다는 뜻이다.



1-4. 배열 사용법

10명이 정원인 한 학급의 시험점수를 저장할때 배열을 사용할 수있는 좋은 예이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
#include<stdlib.h>
int main() {
 
    int student[10= {70,80,84,76,45,90,98,100,98,100};
    int i;
    
    for (i = 0; i < 10; i++) {
        printf("%d 번째 학생의 점수는 %d 이다.\n\n", i, student[i]);
    }
    system("pause");
    return 0;
}
cs


student란 배열을 선언과 동시에 시험점수를 할당해 주었고 for문을 돌려 모든 학생의 점수를 순서대로 출력하게 만들었다.




1-5. 문자열이란?

문자열을 char배열에 저장할 때는 '문자열 상수'를 사용한다.

기존에 우리가 char변수를 사용하면 문자 1개 밖에 저장할 수 없었는데 문자 배열을 사용하면 문장을 저장할 수 있다.




1-6. 문자열 상수

문자 배열에 문자열을 저장하는 방법은 이렇다.


char str[6] = "Hello";


str[ ] : char 배열

"Hello" : 문자열 상수

여기서 잠깐! 분명 Hello는 5글자 인데 필자가 6이라고 선언해 놓은 것을 보고 의아할 수 있다. 여기서 하나 추가된 문자를 '널 문자(NULL)"이ㄹ고 하는데 문자열의 끝을 알려주는 역할을 하며 문자열을 선언할 때는 '문자열+1'을 해주어야 한다.



1-7. 문자열 변수

char str[6] = "Hello"; 에서 str 가 문자열 변수이다.




1-8. ASCII 코드란?

C언어에서 문자가 저장될때 정해진 수로 변환되어 저장되는데 이것을 ASCII코드라 한다. 사람들이 보기 쉽게 아스키 코드를 정리해둔 표가 있는데 그것이 우리가 자주 사용하는 ASCII 코드 표라고 한다.


문자를 입력하면 입력한 문자를 아스키 코드 16진수로 출력하는 프로그램이다.

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
#include<stdlib.h>
int main() {
 
    char a;
        printf("문자 입력(종료: 0)  ");
        scanf_s("%c"&a);
 
        printf("문자 %c 는 아스키 코드(16진수)로 0x%x\n", a, a);
    system("pause");
    return 0;
}
cs

ex)  A -> 0x41

       a -> 0x61



1-9. 2차원 배열

2차원 배열을 선언하는 방법은 다음과 같다.

배열타입 배열이름[행의 길이] [열의 길이];


2차원 배열 arr를 선언하면 4행 3열의 모두 12개의 int값을 저장할 수 있는 공간이 생성된다.



1-10. 다차원 배열

다차원 배열의 선언방법은 다음과 같다.

배열타입 배열이름[면의 길이][행의 길이] [열의 길이];

'면'은 평면, 즉 2차원 배열을 의미하며, 3차원 배열은 여러개의 2차원 배열로 이루어져 있다. 


'@C언어 : Layer7' 카테고리의 다른 글

달팽이 배열  (0) 2018.04.04
배열 문제  (0) 2018.04.02
이중for문 문제풀이  (0) 2018.04.01
if문, if~else문 삼항연산로 짜오기  (0) 2018.03.28
Hello,Layer7출력  (0) 2018.03.25

+ Recent posts