7. 포인터 - 문자열
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 표준을 사용하여 작성되었습니다.