1 char str1[5] = "abcd";
2 char *str2 = "ABCD";
1: 요소가 char형인 str1이라는 이름의 배열을 선언하고, 대입 연산자 오른쪽에 선언된 문자열을 저장하고 있다. 따라서 배열 st1이 저장하고 있는 문자열은 변수가 된다. 문자열 전체를 저장하고 있는 것이다.
2: 대입 연산자의 왼쪽에 char형 포인터를 선언하고, 오른쪽에는 "ABCD"를 가리키겠다는 의미가 된다. 따라서 str2는 문자열의 첫 문자 'A'를 가리키게 된다. 포인터의 타입이 char*인 이유도 여기에 있다. 메모리상에 저자오디어 있는 문자열 상수 "ABCD"를 단순히 가리키고만 있다. 문자열 상수는 메모리 공간에 저장이 되면, 그 순간에 문자열 상수의 주소 값이 반환된다.
#include <stdio.h>
int main(void) {
char str1[5]="abcd"; //문자열 변수 선언
char *str2="ABCD"; //문자열 상수 선언
printf("%s\n", str1);
printf("%s\n", str2);
str1[0]='x'; //문자열 변수 변경, OK!
str2[0]='x'; //문자열 상수 변경, Error!
printf("%s\n", str1);
printf("%s\n", str2);
return 0;
}
'컴퓨터 > C' 카테고리의 다른 글
C exit() (0) | 2022.11.18 |
---|---|
C 포인터 배열, 배열 포인터 (0) | 2022.11.10 |
C array 다차원 배열과 포인터 (0) | 2022.11.10 |
C system() (0) | 2022.11.07 |
C buffer 버퍼 (0) | 2022.11.07 |