문자열형 변수
문자열형 변수는 문자형 변수와 유사하지만 저장과 계산의 효율성을 위해 몇 가지 규칙이 포함되어 있습니다.
아래의 코드를 직접 작성하고 실행해 봅시다.
#include <stdio.h> main () { char a[5] = { 'K', 'O', 'R', 'E', 'A',}; printf ( "%c\n", a[1]); printf ( "%s\n", a); char b[6] = { 'K', 'O', 'R', 'E', 'A', '\0'}; printf ( "%s\n", b); char c[6] = "KOREA"; printf ( "%s\n", c); }
실행결과
위 프로그램을 실행하면 일정한 메모리 공간에 해당하는 문자를 출력합니다.
- 5행에서 a[1]은 ‘O’를 출력하게 됩니다. 따라서 a[0]는 ‘K’, a[2]는 ‘R’이라는 것을 알 수 있죠.
- 6행에서 a를 출력하면 “KOREA”를 모두 출력하게 됩니다. 하지만 우리가 지정한 a[5]는 7행과 달리 종료 문자 없이 출력되므로, ‘K’에서 시작하지만 끝을 알 수 없기 때문에 다른 문자들이 함께 출력됩니다.
- 7행은 b[6] 문자열형 변수에 문자열형 변수 값의 끝을 의미하는 종료(null)문자 ‘\0’이 포함되어 8행에서 정확한 결과가 출력됩니다. 또한 종료 문자를 널(null)문자라고 불르기도 합니다.
- 9행은 입력의 불편함을 막기 위해 출력할 문자를 모두 입력하는 방법으로, 널 문자가 자동적으로 입력됩니다.
문자열형 변수는 여러 문자를 저장하기 위해서 여러 개의 메모리 공간을 연속적으로 할당받아 한 문자씩 저장하게 됩니다.(a[ ], b[ ]등) 문자열형 변수를 저장할 때는 변수명 뒤에 필요한 공간의 크키를 적어야 하는데, 저장하고자 하는 문자열 상수의 길이보다 하나 큰 공간을 할당해야합니다.
(즉 KOREA일 경우 a[5]가 아닌 종료문자가 포함될 수 있도록 a[6]이라고 해야 합니다.)
논리변수
C 언어에서는 ‘참’과 ‘거짓’의 논리 상수값을 저장하는 변수를 사용할 수 있습니다. 일반적으로 논리값은 ‘크다’, ‘작다’와 같은 비교 연산의 결과이죠.
아래의 코드를 직접 작성하고 실행해 봅시다.
#include <stdio.h> #include <stdbool.h> main () { bool a = false; bool b = 25; printf ( "%d %d \n", a, 0); printf ( "%d %d \n", b, true); }
실행결과
어? 헤더 파일이 2개가 사용되었네요? 또한 자료형이 int나 char 대신 bool이 사용되었습니다.
- bool자료형을 사용하기 위해서 헤더 파일 #include <stdbool.h>가 필요합니다.
- bool은 논리 자료형 이라고도 하며 참과 거짓을 나타내는 데 사용합니다.
- 5행에서 논리 변수 a에 거짓(false, 0)이 저장됩니다.
- 6행에서 b에는 25를 저장하였지만 논리 변수에 저장할 때 1(true)로 바꾸어 저장됩니다. 따라서 6행과 7행에서 각각 ‘0, 0’과 ‘1, 1’이 출력되죠.
- 논리값을 의미하는 논리 상수인 참(true), 거짓(false)은 1(참) 또는 0(거짓)으로 바뀌어 저장되며, 0 이외의 모든 수는 참(true)으로 인식됩니다.
#include <stdbool.h> – bool, true, false가 정의된 헤더 파일
다음 토픽에서는 변수 이름의 작성 규칙과 C프로그램의 기본구조에 대해 알아봅시다.