티스토리 뷰

Programming/C/C++

문자와 문자열

맥밤 2016. 3. 30. 19:29

이 블로그는 제가 공부한 것을 바탕으로 정리 목적으로 사용되고 있습니다.

작성 내용중 부족한 부분이나 잘못된 부분을 지적해주시면 감사하겠습니다 (꾸벅)


C 언어에서 문자를 저장할 때 주로 문자 자료형을 사용한다. 변수에 저장하기 위해서는 "......" 이라는 따음표를 사용한다.


#include <stdio.h>


int main (void){

char a = 'A';

char b = 57;


printf("%c : %d\n",a,a);    //%c의 의미하는 바는 문자형으로 출력하는 것, %d는 정수형으로 값을 출력

printf("%c : %d\n" ,a+1, a+1);

printf("%c : %d\n" ,b,b);


return 0;

}


위의 예제의 결과를 보면 아래와 같다.



char 자료형은 문자형 데이터를 처리하기 위해 자료형으로 아스키 형태의 문자를 계산하거나 처리하기 위한 자료형이다.

하지만 정수형 데이터로 처리하기 때문에 1바이트 크기의 정수형 자료형으로도 함께 사용 가능하다.

그래서 'A'+1이라는 연상이 가능하고 저장된 정수형 값을 사용시 문자형(%c)으로 표기할 것인지 정수형(%d)을 표기할 것인지

선택하면 된다.

위에서 확인 가능하듯 정수형 값 57은 문자형 값 '9'와 같지만, 정수형 값 9는 문자형으로 '9'와 상관이 없고 다른 값을 갖는다.


#include <stdio.h>


int main (void){

int i;

char str[] = "char";


printf("%s\n",str);


for(i = 0; i<sizeof(str)/sizeof(char); i++){

printf("str[%d] : %c[%d] \n",i,str[i],str[i]);

}


return 0;

}


위의 코드의 결과를 보면


char 배열 str을 선언하면 "char" 문자열로 초기화하고 각 배열 요소에 저장된 값을 출력하고 있다. 실행 결과 이상한 점은

"char"은 총 4글자로 구성되어있지만 3번째 위치의 다음에 NULL 문자가 함께 저장되어 출력되고 있다.

즉 이는 총 4바이트 크기의 공간과 마지막 NULL 문자까지 5바이트 공간을 차지하고 있다.


c

 h

a 

r 

\0 

 str[0]

str[1] 

str[2] 

str[3]

str[4] 




'Programming > C/C++' 카테고리의 다른 글

int main (int argc, char *argv[]) 에 대해서  (0) 2016.04.05
구조체와 공용체의 혼용  (0) 2016.04.02
기본 함수  (0) 2016.03.30
나머지 값 연산자 사용 법 % 사용법  (0) 2016.03.19
C언어 변수의 크기  (0) 2016.03.18
댓글