-목차-
1. 문자열에 대해
2. 문자열의 메모리 구조
1. 문자열에 대해
● 문자열의 의미
- 문자열이란 문자의 나열임
- 배열의 각 요소에 문자 코드를 저장함
- char 타입의 배열에 보통 저장함. (왜냐하면 문자 요소 코드를 1byte로 저장하기 때문)
● 문자열의 끝
- 마지막에 '\0' (Null 문자) 저장 (배열의 마지막에 0을 담을 경우 이것 또한 NULL을 의미함)
- 문자열의 마지막을 의미하는 표시일 뿐 전달하고자하는 특별한 의미는 없음
● 문자열의 길이 vs 문자 배열의 길이
- 문자열의 길이는 전달하고자 하는 문자열 내용의 길이임. 즉, '\0'(NULL)이 나타나기 전까지 문자 코드의 개수
- 문자 배열의 길이는 문자열을 저장하는데 사용하는 배열의 원소 개수임. 즉, '\0'(NULL)까지 포함함.
ex) 지금까지의 개념 예시
#include <stdio.h>
int main(void)
{
char a[4] = { 97, 98, 99, 0};
char b[4] = {'a','b','c','\0'};
char c[4] = "abc";
char d[] = "abc";
return 0;
}
문자열 a의 문자열의 길이 : 3, 문자 배열의 길이 : 4
문자열 b의 문자열의 길이 : 3, 문자 배열의 길이 : 4
문자열 c의 문자열의 길이 : 3, 문자 배열의 길이 : 4
문자열 d의 문자열의 길이 : 3, 문자 배열의 길이 : 4
+) 문자열을 초기화 방법은 위와 같이 4가지 방법이 존재함. (원소 개수 생략하고 배열 초기화 가능. 왜냐하면 컴파일러가 배열 안에 값의 개수를 파악하여 생략된 배열의 원소 개수를 추정함.)
● 문자열 입출력을 위한 형식지정자
- %s : 문자열 출력
- scanf 함수를 사용한 입력 시 빈칸은 무시되어 입력되지 않음
+) 문자열 입력도중에 빈칸을 입력하면 배열 초기화 과정 중에 끊김 ★★
#include <stdio.h>
int main(void)
{
char a[512];
scanf("%s",a);
printf("(%s)\n",a);
return 0;
}
2. 문자열의 메모리 구조
#include <stdio.h>
int main(void)
{
char a[4] = { 97, 98, 99, 0};
char b[4] = {'a','b','c','\0'};
char c[4] = "abc";
char d[] = "abc";
return 0;
}
- 위 그림과 같이 저장됨 (문자 배열의 마지막인 0 또한 저장되는 것을 확인 가능)
※ 특수 문자와 Escape Sequence
● Escape Sequence
- 백슬래쉬 문자(\)로 시작하고, 다음 문자는 특별한 방식으로 해석됨
● Tab 문자를 활용한 정렬
- tab 문자를 통해 보기 좋게 정렬 가능
#include <stdio.h>
int main(void)
{
printf("abcd\tefg\n");
printf("ab\t124\t\tfg\n");
return 0;
}
'CS > C, C++' 카테고리의 다른 글
[C/C++] 01-1 컴퓨터 시스템과 프로그램의 이해 (0) | 2021.10.17 |
---|---|
[C/C++] 05-4 다양한 자료형과 자료 표현 - 연산자 (0) | 2021.10.03 |
[C/C++] 05-2 다양한 자료형과 자료 표현 - 실수형 및 문자 (0) | 2021.09.30 |
[C/C++] 05-1 다양한 자료형과 자료 표현 - 정수형 (0) | 2021.09.29 |
[C/C++] 04 - 2 함수 선언과 변수 유효 범위 (0) | 2021.09.25 |