딩굴댕굴

C 15Day (20160127)

by jennysgap

BOX

배열

정의

  • 둘 이상의 변수를 모아 놓은 것
  • 동일한 타입을 가지는 변수들의 집합
활용
  • 다수의 변수 선언을 용이하게 하기 위함
  • 같은 형의 변수들을 연속적으로 나란히 선언할 수 있다.
  • 문자열을 사용할 수 있다.
인덱스를 이용해서 순차적으로 접근이 가능하다는 장점이 있음

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main(void)
{
    //자료형 배열이름[배열길이];
    int arr[5];
 
    arr[0]=10;
    arr[1]=20;
    arr[2]=30;
    arr[3]=40;
    arr[4]=50;
 
    printf("%d ", arr[0]);
    printf("%d ", arr[1]);
    printf("%d ", arr[2]);
    printf("%d ", arr[3]);
    printf("%d ", arr[4]);
 
    return 0;
}
cs


반복문 사용할 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main(void)
{
    int arr[5];
    int i;
 
    for (i=0; i<5; i++)
        arr[i]=(i+1)*10;
 
    printf("%d ", arr[0]);
    printf("%d ", arr[1]);
    printf("%d ", arr[2]);
    printf("%d ", arr[3]);
    printf("%d ", arr[4]);
 
    return 0;
}
cs



printf 또한 반복문으로 사용 가능

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main(void)
{
    int arr[5];
    int i;
 
    for (i=0; i<5; i++)
    {
        arr[i]=(i+1)*10;
        printf("%d ", arr[i]);
    }
 
    return 0;
}
cs



선언과 동시에 초기화 가능

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main(void)
{
    int arr[5]={1020304050};
    int i;
 
    for (i=0; i<5; i++)
    {
        printf("%d ", arr[i]);
    }
 
    return 0;
}
cs



입력 안 했을 경우 0으로 초기화 됨

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main(void)
{
    int arr[5]={1020};
    int i;
 
    for (i=0; i<5; i++)
    {
        printf("%d ", arr[i]);
    }
 
    return 0;
}
cs



길이를 명시하지 않았어도 알아서 길이를 캐치해줌

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main(void)
{
    int arr[]={1020};
    int i;
 
    for (i=0; i<2; i++)
    {
        printf("%d ", arr[i]);
    }
 
    return 0;
}
cs






배열의 이해

  • 장점에 대해서 잘 파악하자!
  • 순서대로 입력하기 때문에 인덱스를 가지고 순차적으로 접근이 용이
  • 여기까지 하면 배열의 기본은 끝
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
#include <stdio.h>
int main(void)
{
    int arr1[5= {12345};
    int arr2[] = {1234567};
    int arr3[5= {12};
    int len1, len2, len3, i;
 
    printf("arr1의 크기 : %d \n"sizeof(arr1));        //sizeof 연산의 결과로 배열의 크기를 반환
    printf("arr2의 크기 : %d \n"sizeof(arr2));
    printf("arr3의 크기 : %d \n"sizeof(arr3));
 
    len1 = sizeof(arr1) / sizeof(int);            //배열의 길이를 계산
    len2 = sizeof(arr2) / sizeof(int);
    len3 = sizeof(arr3) / sizeof(int);
 
    for(i=0; i<len1; i++)            //반복문을 이용해 순차적으로 접근이 가능
        printf("%d", arr1[i]);
    printf("\n");
 
    for(i=0; i<len2; i++)
        printf("%d", arr2[i]);
    printf("\n");
 
    for(i=0; i<len3; i++)
        printf("%d", arr3[i]);
    printf("\n");
 
}
cs

sizeof는 크기를 알려주는 연산자





문제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main(void)
{
    int arr[5];
    int max, min, sum, i;
 
    printf("입력 : ");
    for(i=0; i<5; i++)
    {
        scanf("%d", &arr[i]);
    }
    printf("\n");
 
    //코드를 작성하시오
 
    printf("최대값 : %d \n", max);
    printf("최소값 : %d \n", min);
    printf("총 합 : %d \n", sum);
    return 0;
}
cs
입력 10 20 30 40 50

최대값 : 50

최소값 : 10

총합 : 150







배열 (널 문자의 이해)



        Char str[14]="Good morning!";

널(\0) 문자

  • 문자열의 끝에 자동으로 삽입되는 문자
  • 문자열의 끝을 알려줌
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(void)
{
    char str[]="I hate C!";
    
    printf("%d\n"sizeof(str));    //배열 길이=10
    printf("%s\n", str);            //문자 출력
    printf("%c", str[9]);            //\0 출력 해보세욥(형태가 없음)
 
    return 0;
}
cs


형태가 없는거 보니 널문자는 스페이스 아닌가요? (비교해 보죠)

서로 다른 문자에요~ 오해 금지!

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main(void)
{
    char nu='\0';
    char sp=' ';
 
    printf("%c %c\n", nu, sp);        //둘 다 안나옴
    printf("%d %d\n", nu, sp);        //아스키코드값이 다름
 
    return 0;
}
cs





배열(널 문자의 이해) 예제

배열의 각 요소는 변수 성향임 그래서 임의로 변경해서 저장 가능!

나중에 포인터 변수 사용하면서 헷갈릴 수 있으니 잘 기억해 둘 것!!

*주의* 문자열은 싱글커텐션(' ')이 아니라 더블커텐션(" ")


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main(void)
{
    char str[] ="Good morning!";    //배열의 길이가 14 ??
 
    printf("배열의 크기 : %d \n"sizeof(str));
    printf("널 문자 문자형 출력 : %c \n", str[13]);
    printf("널 문자 정수형 출력 : %d \n", str[13]);
 
    str[12= '?';            // str에 저장된 문자열 데이터는 변경 가능
    printf("%s \n", str);
 
    return 0;
}
cs









20160127 c언어 15day.txt





블로그의 프로필 사진

블로그의 정보

jennysgap

jennysgap

활동하기