728x90

 

C 언어에서 문자열이란?

더보기

끝에 '\0' 문자를 포함해 '문자'들이 메모리상에 연속적으로 저장된 상태
첫 글자의 시작 주소로 연속적으로 저장된 모든 문자에 접근할 수 있다.

문자열은 보통 주소로 관리되기 때문에 포인터와 같이 사용된다. 

문자열은 상수 영역과 변수 영역으로 사용 가능
- 상수 영역이란 변경이 불가능한 메모리
- 변수 영역이란 변경이 가능한 메모리

 

상수

char *cp = "ABCD";

 

변수

char cArr1[10] = "ABCD";
char cArr2[10] ={'A','B','C','D','\0'};

 

[1, '1', "1", "123", '\0', '0', ' ', "", NULL]

 

문자 의미
1 정수를 의미하며 정수 1(10진수)이다.
일 숫자라 부른다.
'1' 한 문자를 의미하며 ASC 코드 정수 49(10진수)이다.
일 문자라 부른다.
"1" 문자열을 의미하며 메모리에 두 문자 '4' 문자(49)와 \0(0) 문자가 저장되어 있고
문자열의 시작 주소를 char형 포인터에 저장한다. 일 문자열이라 부른다.
"123" 문자열을 의미하며 메모리에 네 문자 '1' 문자(49)와 '2' 문자(50), '3' 문자(51), '\0'(0) 문자가 저장되어 있고
문자열의 시작 주소를 char형 포인터에 저장한다. 일이삼 문자열이라 부른다.
'\0' 한 문자를 의미하며 ASCII 코드 정수 0(10진수)이고 문자열의 끝에 저장된다.
널 문자라 부른다.
'0' 한 문자를 의미하며 ASCII 코드 정수 48(10진수)이다.
영 문자라 부른다.
' ' 한 문자를 의미하며 ASC 코드 정수 32(10진수)이다.
공백 문자라 부른다.
'' 한 문자를 의미하지만 문자를 포함하지 않으므로
컴파일 오류가 발생한다.
" " 문자열을 의미하며 메모리에 두 문자'(32)와 '\0'(0) 문자가 저장되어 있고
문자열의 시작 주소를 char형 포인터에 저장한다. 공백 문자열이라 부른다.
"" 문자열을 의미하며 메모리에 한 문자 \0'(0) 문자가 저장되어 있고
문자열의 시작 주소를 char형 포인터에 저장한다. 널 문자만 갖는 문자열이라 부른다.
NULL 주소의 의미이며 주소 O( (void*)O)으로 정의되어 있다.
포인터 변수를 초기화할 때 사용하며 주소를 사용하지 않는다는 의미로 널 포인터라 부른다.

 

더보기
#include <stdio.h>
#include <wchar.h>

void main()
{
    char c = 'A'; // ASCII 문자
    wchar_t wc = L'A'; // UNICODE 문자

    printf("ASCII: %c\n", c); //ASCII 문자 출력
    wprintf(L"UNICODE: %c\n", wc); //UNICODE 문자 출력

    printf("ASCII: %ld\n", sizeof(c));
    printf("UNICODE: %ld\n", sizeof(wc));
}
// ASCII 문자와 UNICODE 문자의 크기를 출력합니다.
// ASCII 문자는 1바이트, UNICODE 문자는 2바이트입니다.
// 이 코드는 C17 표준을 사용하여 작성되었습니다.