본문 바로가기
프로그래밍언어/C언어[초급]

[C언어][초급] Chapter53. 포인터와 문자열 – 문자열을 더 유연하게 다루는 방법

by about_IT 2025. 4. 19.
728x90

문자열을 다룰 때는 배열뿐 아니라 포인터를 활용하면 훨씬 유연하고 효율적인 처리가 가능합니다.
이번 글에서는 문자열을 포인터로 선언하고 사용하는 방법을 배워봅니다.


● 문자열을 배열로 선언

char str[] = "Hello";

이 방식은 문자열이 메모리에 복사되어 저장됩니다. 문자열을 수정할 수 있습니다.


● 문자열을 포인터로 선언

char *str = "Hello";

이 방식은 문자열이 읽기 전용 메모리에 저장되며, 수정이 불가능합니다.


● 포인터를 이용한 문자열 순회

char *str = "banana";

while (*str != '\0') {
    printf("%c ", *str);
    str++;
}

포인터를 한 글자씩 옮기면서 문자열을 순회할 수 있습니다.


● 문자열 함수와 포인터

char *name = "Alice";
int len = strlen(name);

문자열 관련 함수들은 대부분 포인터를 인자로 사용합니다.


● 요약

  • 문자열 상수는 포인터로 다루는 것이 일반적입니다.
  • 수정 가능한 문자열은 배열, 읽기 전용은 포인터로 선언합니다.
  • 포인터를 이용하면 문자열 순회가 매우 간편합니다.

포인터로 문자열을 다루면 코드가 간결해지고 유연성이 높아집니다.
C언어의 문자열 함수 대부분이 포인터를 사용하므로, 꼭 익혀두어야 할 개념입니다.


● 실습 문제

문제 1

문자열 "C언어"를 포인터로 선언해 출력하세요.

 

문제 2

포인터 str을 이용해 문자열을 한 글자씩 출력하는 코드를 작성하세요.

 

문제 3

문자열을 포인터로 선언했을 때 수정할 수 없는 이유는?

 

문제 4

char str[] = "hi"; 와 char *str = "hi";의 차이를 설명하세요.

 

문제 5

포인터를 이용한 문자열 순회의 장점을 간단히 설명하세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

▶ 정답 확인하기

정답 1

char *str = "C언어";
printf("%s\n", str);

 

정답 2

char *str = "banana";

while (*str != '\0') {
    printf("%c ", *str);
    str++;
}

 

정답 3

포인터로 선언한 문자열은 읽기 전용 메모리에 저장되기 때문에 수정할 수 없습니다.

 

정답 4

배열로 선언하면 문자열 내용을 변경할 수 있지만, 포인터로 선언하면 내용을 변경하면 오류가 발생할 수 있습니다.

 

정답 5

포인터는 메모리를 직접 접근하므로, 반복문에서 인덱스 없이도 문자열을 간편하게 순회할 수 있습니다.

728x90