C언어 study_배열(array), 문자열

민성철·2022년 11월 12일
0

nadocoding_study_C

목록 보기
11/17

배열(array)

배열(array)이란, 동일한 자료형의 값 여러 개를 저장하는 연속된 공간을 말합니다.

배열을 쉽게 이해하기 위해 지하철로 비유하자면, 각 칸마다 사람이 얼마나 타고 있는지를 정의하고 출력한다고 가정할 때, 각 칸을 변수로 지정하고 출력할 수 있겠지만,
그 칸이 수십 혹은, 수백 개의 칸을 정의하고 출력한다면 변수를 그만큼 선언하기엔 너무 많기 때문에 귀찮고 코드도 많이 지저분할 것입니다. 이를 보완하기 위해 배열을 사용합니다.

배열을 사용하려면 변수와 마찬가지로 먼저 배열을 선언해줘야 합니다.
배열을 선언할 때도 자료형배열명을 적습니다. 그리고 배열명 뒤에 대괄호([])를 붙이고 그 안에 '배열 크기'를 적습니다.

배열에서 변수 하나에 해당하는 공간을 '요소'라고 하고, 배열의 요소는 인덱스(index)라는 번호로 구분하고 각 요소의 값에 접근할 때 사용합니다.
컴퓨터는 숫자를 '0'부터 시작하기 때문에, 배열 또한 '0'부터 시작합니다.

  • 배열을 선언할 때 '배열 크기'는 반드시 상수만 넣을 수 있습니다.
    상수는 변하지 않는 수 입니다. 그렇기 때문에 상수를 변수로 선언하여도 변수는 배열 크기로 사용하지 못합니다.
int size = 10;
int array[size];  // ( X )
int array[10];    // ( O )
  • 배열은 중괄호({})를 사용하여 선언할 때 한 번에 초기화할 수 있습니다.
int array[10] = {0, 1, 2, 3, ..., 9};
  • 배열을 선언해준 뒤에 꼭 대입 연산자(=)를 사용하여 값을 넣어 초기화를 해줘야 합니다.
    이유는 선언만 해주고 초기화하지 않으면 어떤 값인지 아무도 모르는 값이 할당된 메모리 공간에 들어가고, 이러한 값을 프로그래밍에서는 '더미 값(dummy value)', '쓰레기 값(garbage value)'이라고 합니다.
  • 배열은 배열 크기의 일부만 초기화가 가능하며, 초기화하지 않은 요소들은 정수, 실수 모두 0(or 0.00)으로 초기화됩니다.
  • 배열을 선언할 때, 대괄호([])안에 배열 크기를 넣지 않아도 사용 가능하며, 배열 크기를 지정해주지 않을 경우 컴파일러(compiler)가 자동으로 값의 개수만큼 크기를 지정해 줍니다.

문자열

배열에 문자열 저장하기

문자 혹은 문자열을 선언할 때는 자료형 중에 'char'형을 사용합니다.
여기서 문자는 서식 지정자로 %c를 사용합니다. 하지만, 문자열은 값이 여러 개 이기 때문에 배열 크기를 선언해줘야 하고, 서식 지정자는 %s를 사용합니다.

문자열을 저장할 때 주의할 점이 있습니다. 그것은 '배열 크기'입니다.
예를 들어 'coding'이라는 문자열을 저장할 경우 [c, o, d, i, n, g] 총 6개로 배열 크기를 6개로 지정하면 아래와 같은 output이 나옵니다.

coding�

가끔 정상적으로 출력될 때도 있지만, 대부분 에러가 발생됩니다.
이는 문자열 끝에는 항상 NULL값이 들어가야 하기 때문에, 문자열을 저장할 때는 항상 문자열의 끝을 알리는 널(NULL) 문자가 들어갈 공간을 마련해야 합니다.
그래서 배열 크기를 최소한 글자 수 + 1을 지정해줘야 합니다.

배열(array)을 선언할 때, 일부만 초기화할 경우, 빈자리는 0으로 표시되지만, 문자열의 경우에는 빈칸[널(NULL)]으로 표시됩니다.

배열 크기가 작거나 같으면 에러가 발생되고, 배열 크기가 클 경우 빈칸으로 채워지기 때문에, 입력받을 글자의 크기를 알 수 없을 때에는 넉넉하게 선언하는 편이 좋습니다.

  • 문자는 값을 작은따옴표(')로 감싸지만, 문자열은 큰따옴표(") 감쌉니다.

배열 크기는 sizeof로 알아낼 수 있습니다.
sizeof 연산자는 소괄호(())안에 넣은 배열, 변수, 자료형 등이 메모리 공간을 얼마나 차지하는지 바이트(byte) 단위로 알려줍니다.
참고로 메모리에서 알파벳과 숫자는 1바이트를 차지합니다. 하지만 한글의 경우, 차지하는 저장 공간의 크기가 다르기 때문에 한 글자에 2바이트를 차지합니다.

문자열

아스키코드

아스키코드는 미국표준협회(ANSI, Americcan National Standards Interchange)에서 제시한 표준 코드 체계를 의미합니다.
국가별로 사용하는 문자가 다르다 보니 서로 호환되지 않는 문제가 발생되었고, 이를 해결하기 위해 미국표준협회에서 아스키라는 표준 코드 체계를 제시했고 지금까지 이 코드가 공용으로 사용되고 있습니다.
아스키코드는 문자 하나를 7비트(bit)로 표현하며, 0~127까지 총 128(2^7) 개 문자를 표현할 수 있습니다.
전체 아스키코드 표는 "https://ko.wikipedia.org/wiki/ASCII' 에서 확인 가능합니다.

profile
ENTJ-A

0개의 댓글