반응형
1. 문자(배)열의 크기는 저장될 문자열의 길이 +1을 해준다.
char str[10]; // "abcdefghi"
2. 배열의 크기인 10보다 작은 문자열로 초기화하면, 나머지 공간에는 NULL로 채워진다.
char str[10] = "abc"; // abc까지 저장되고 나머지 공간에는 NULL로 채워진다.
3. 선언한 배열의 크기보다 더 큰 문자열을 초기화하려고 시도하면 'compile error'가 발생한다. 즉 문자열을 할당받은 저장 공간의 크기만큼 저장되고, 나머지 문자열 자리에는 쓰레기 값이 출력된다.
char str[10] = "abcdefghijklmn"; // compile error
4. 배열을 초기화했을 경우, 배열의 크기는 따로 입력하지 않아도 된다.
char str[] = "abcdef"; // str[6]만큼의 공간이 할당된다.
5. 초기화 시, 문자열을 따로 입력하지 않으면 선언한 크기의 공간이 NULL로 초기화된다.
char str[10] = ""; // str은 NULL로 초기화된다.
6. 배열은 데이터가 저장된 공간의 시작 주소를 가리킨다.
#include<stdio.h>
int main(){
char str1[10] = {'a', 'b', 'c'};
char str2[10] = "abc";
char str3[] = "abc"; // 문자열 끝에 '\n'을 포함하여 4byte가 할당된다.
char str4[10] = "very Long String"; // (오류) 선언된 크기보다 더 큰 저장공간이 필요하다.
int size = sizeof(str1) / sizeof(str1[0]); // str1[] 배열의 index 크기를 구한다.
for(int i = 0; i < size; i++){ // str1[i]에 저장된 문자를 하나씩 출력한다.
printf("%c", str1[i]);
}
printf("\nstr2 = %s\n", str2); // str2에 저장된 문자열을 출력한다.
printf("str3 = "); printf(str3);
printf("\nstr4 = %s\n", str4); // str4[]에서 선언한 크기는 '10'이다.
// str4[]에는 10만큼의 저장공간이 확보되어 10byte까지 해당되는 문자열만 str4[]에 저장된다.
// 그 이상의 문자열자리에는 쓰레기 값이 출력된다.
return 0;
}
반응형
'C' 카테고리의 다른 글
[C언어] 실습: 입력받은 문자열 역순으로 출력하기 (1) | 2021.05.04 |
---|---|
[C언어] 문자열: strlen() (0) | 2021.05.03 |
[C언어] 실습: 문자열 처리하기(동적 할당) (0) | 2021.05.01 |
[C언어] 동적 메모리 할당 (malloc, calloc) (0) | 2021.04.29 |
[C언어] 이중 포인터 (0) | 2021.04.28 |