본문 바로가기

컴퓨터/C

C 문자열 변수와 문자열 상수

 1 char str1[5] = "abcd";
 2 char *str2 = "ABCD";

1: 요소가 char형인 str1이라는 이름의 배열을 선언하고, 대입 연산자 오른쪽에 선언된 문자열을 저장하고 있다. 따라서 배열 st1이 저장하고 있는 문자열은 변수가 된다. 문자열 전체를 저장하고 있는 것이다.

2: 대입 연산자의 왼쪽에 char형 포인터를 선언하고, 오른쪽에는 "ABCD"를 가리키겠다는 의미가 된다. 따라서 str2는 문자열의 첫 문자 'A'를 가리키게 된다. 포인터의 타입이 char*인 이유도 여기에 있다. 메모리상에 저자오디어 있는 문자열 상수 "ABCD"를 단순히 가리키고만 있다. 문자열 상수는 메모리 공간에 저장이 되면, 그 순간에 문자열 상수의 주소 값이 반환된다.

출처: 열혈강의 C 프로그래밍

#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