문자열은 주소라고 했습니다. 따라서 문자열도 char 포인터에 대입하여 사용할 수 있습니다. 문자열을 char 포인터에 대입하면 문자열에 이름을 붙여 사용할 수 있고 다른 문자열로 쉽게 바꿀 수 있습니다. 예제를 통해 포인터로 문자열을 사용하는 방법을 살펴보겠습니다.
// 포인터로 문자열을 사용하는 방법
int main(void)
{
char *dessert = "apple"; // 포인터에 문자열 초기화
printf("오늘 후식은 %s입니다.\n", dessert); // 문자열 출력
dessert = "banana"; // 새로운 문자열 대입
printf("내일 후식은 %s입니다.\n", dessert); // 바뀐 문자열 출력
return 0;
}
5행은 char 포인터를 선언하고 문자열 상수로 초기화합니다. 문자열은 컴파일 과정에서 별도로 보관되고 첫 번째 문자의 주소로 바뀌므로 결국 포인터에는 문자열의 시작 위치 값만 저장됩니다. 그러나 포인터 연산을 통해 얼마든지 해당 문자열 전체를 사용할 수 있습니다.
dessert가 가리키는 곳에는 a가 저장되어 있습니다. dessert를 1 증가시키면 다음 문자의 주소를 구할 수 있고 간접 참조 연산을 수행하면 그 문자를 사용할 수 있습니다. 따라서 dessert의 값을 증가시키면서 널 문자가 나올 때까지 문자를 출력하면 결국 문자열 전체를 출력할 수 있습니다.
printf("오늘 후식은 %s입니다.\n", dessert); // 7행, 문자열 출력
printf 함수의 %s 변환 문자는 포인터 연산으로 문자열을 출력합니다. 즉 printf 함수에서 %s 변환 문자를 사용하면 결과적으로 함수안에서 다음 코드와 같은 일이 수행합니다.
while (*dessert != '\0') // dessert가 가리키는 문자가 널 문자가 아닌 동안
{
putchar(*dessert); // dessert가 가리키는 문자 출력
dessert++; // dessert로 다음 문자를 가리킨다.
}
'프로그래밍언어 > C 언어' 카테고리의 다른 글
[C 언어] get 함수를 사용한 문자열 입력 (1) | 2022.12.09 |
---|---|
[C 언어] scanf 함수를 사용한 문자열 입력 (0) | 2022.12.09 |
[C 언어] 문자열 상수 구현 방법 (0) | 2022.12.09 |
[C 언어] 입력 버퍼 지우기 (0) | 2022.12.09 |
[C 언어] getchar 함수를 사용한 문자열 입력 (1) | 2022.12.09 |