1.배열

배열이란 같은 자료형을 가진 연속된 메모리 공간으로 이루어진 자료구조입니다.

배열을 이용하면 여러 개의 값을 하나로 저장,관리할 수 있다.


1-1.배열을 쓰는 이유

배열을 쓰는 이유는 C언어를 공부하다 보면 가끔씩 데이터를 한 번에 많이 저장하고 관리해야 하는 일이 생기곤 합니다.

이때 배열을 쓰지 않는다면 코드의 길이도 길어지고 복잡해집니다.

ex)

      

1
2
3
4
5
6
//변수 100개 선언
//배열 사용 X
int num1, num2, num3, ············num100;
 
//배열 사용 O
int num[100];
cs

하지만 이렇게 배열을 사용한다면 매우 간단해집니다.


1-2.배열의 선언 방법

1
2
//자료형 변수형[변수길이]; 
ex) int num[100];
cs

이렇게 배열을 선언하고 사용합니다.

(배열의 시작은 0부터 시작이니 1~100까지 저장이 아닌 

0~99까지 저장입니다.)


1-3.배열의 초기화

1
2
3
4
5
6
7
8
int num[5= { 0, };
//num[0~4]모든 배열의 변수의 값을 0으로 초기화
int num[5= { 0,1,2,3,4 };
//배열의 변수의 값을 각각 따로 초기화
int num[5= { 0,1,2 };
/*배열의 변수의 값을 num[0~2]까지만 따로 초기화시키고 
나머지 변수는 0으로 초기화*/
 
cs



1-4.배열 사용법

1
2
3
4
5
6
7
8
9
10
11
12
//CodeUp 1402번 배열문제
#include<stdio.h>
int main() {
    int num1, num2, a[1000];
    scanf("%d"&num1);
    for (num2 = 0; num2 < num1; num2++) {
        scanf("%d"&a[num2]);
    }
    for (num2 = num1 - 1; num2 >= 0; num2--) {
        printf("%d ", a[num2]);
    }
}
cs

이렇게 사용가능합니다.


1-5.문자열이란?

  • 문자 등을 1차원적으로 나열한 것을 가리킵니다.(문자들을 나열한 것)
  • 서식문자로는 %s를 사용합니다.
  • 자료형은 char를 사용하며 변수 선언할 때 []를 사용하여 최대 크기를 지정하고 이 숫자만큼의 문자를 넣을 수 있습니다.
  • 초기화할 때에는 넣어줄 문자를 큰 따옴표""안에 묶어줍니다.                                                                             ex)
  • 1
    2
    3
    4
    5
    #include<stdio.h>
    int main(){
        char ch[10= "도레미파";
        printf("%s", ch);
    }


    cs


1-6.문자열 상수

char *ch="ABCD";

대입 연산자의 왼쪽에 char형 포인터를 선언하고, 오른쪽에는 "ABCD"라는 문자열을 선언하고 있다. 이는 포인터 ch를 이용해서

문자열 상수 "ABCD"를 가리키겠다는 의미가 된다. 따라서 ch는 문자열의 첫 문자 'A'를 가리키게 된다.

포인터 ch는 메모리에 저장되어 있는 문자열 상수 "ABCD"를 단순히 가리키고만 있다.

ch가 가리키는 문자열은 상수이므로 변경 시에 문제 일으킨다.

문자열의 마지막에는 널문자(\0)이 들어가므로 ABCD를 저장하면

ABCD(\0)으로 5자리의 배열로 저장된다. 


1
2
3
4
5
6
7
#include<stdio.h>
int main(){
    char*ch = "ABCD";
    printf("%s", ch);//여기까지는 정상적으로 작동
    ch[0= 'X';//여기에서 상수인 ch를 변경하였기에 작동X
    printf("%s", ch);
}
cs


1-7.문자열 변수

char ch[5]="abcd";

요소가 char인 ch이라는 이름의 배열을 선언하고, 대입 연산자 오른쪽에 선언된 문자열을 저장하고 있다.따라서 ch가 저장하고 있는 문자열은 변수가 된다.

문자열 변수이므로 변경해도 문제가 없다.배열의 초기화와 같은 방법으로 초기화한다.마지막에 널문자가 들어가므로 n자리의 문자를 넣으려면 []안에 n+1의 수를 넣어야한다.[6]을 넣고 3자리의 문자를 넣으면 남은 변수의 자리에는 0이 들어가게 된다.


1-8.ASCII 코드란?

ASCII(American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)

초창기에는 다양한 방법으로 문자를 표현했는데 여러 문제가 발생하자 이런 문제를 해결하기 위해 ASCII라는 표준 코드 체계가 제시되었고,현재 이 코드가 일반적으로 사용 중이다.총 128개의 부호가 사용된다.이는 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계이며,매우 단순하고 간단해서 어느 시스템에도 적용가능하나 2바이트 이상의 코드를 표현할 수 없다.

위처럼 나타내고 있다.

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main() {
    //10진수,8진수,16진수로 문자 표현
    printf("10진수 : %d 8진수 : %o 16진수 : %x\n"'a''a''a');
    //문자로 16진수 표현
    printf("%c"0x61);
}
 
 
cs

1-9.2차원 배열

2차원 배열은 []을 2번 사용해 앞에 []는 행(세로)을 뜻하고 뒤 []는 

열(가로)을 뜻합니다.그렇게 평면의 사각형을 나타내는 것입니다. 

(2차원도 배열의 시작은 0부터)

2차원 배열의 초기화는 

1
int num[2][2= { {0,1}, {2,3} };
cs
이러한 형태로 이루어지는데 {}속의 첫 {}는 첫번째 행에서의 열 2개의 값이고 두번째 {}는 두번째 행에서의 열 2개의 값입니다.

 행/열

 0

 1

  0

 0

 1

 1

 2

 3


1-10.다차원 배열

2차원 이상의 배열을 다차원 배열이라고 하는데 주로 2차원 배열만 사용한다.3차원 배열은 [가로][세로][높이]이렇게 육면체 모양이다.


'과제' 카테고리의 다른 글

정렬 알고리즘 구현  (0) 2018.04.03
배열 문제 풀이  (0) 2018.03.31
이중 반복문 문제풀이  (0) 2018.03.31
3개의 정수 입력받아 최댓값,최솟값 출력  (0) 2018.03.27
삼항연산자로 학점나오게하기  (0) 2018.03.26

+ Recent posts