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
'프로그래밍언어 > C언어[초급]' 카테고리의 다른 글
[C언어][초급] Chapter55. 구조체의 선언과 사용 – 여러 데이터를 하나로 묶는 방법 (0) | 2025.04.19 |
---|---|
[C언어][초급] Chapter54. 포인터를 이용한 함수 호출 – (call by value, call by reference) (0) | 2025.04.19 |
[C언어][초급] Chapter52. 포인터와 배열 – 배열의 시작 주소와 포인터의 관계 (0) | 2025.04.19 |
[C언어][초급] Chapter51. 포인터 선언과 사용 – 다양한 자료형의 포인터 활용하기 (0) | 2025.04.19 |
[C언어][초급] Chapter50. 포인터란? – 메모리 주소를 다루는 핵심 개념 (0) | 2025.04.19 |