문자 포인터와 함수에 대해 C에서
안녕하세요, 더 나은 프로그래머를 꿈꾸는 여러분! 오늘은 C에서 문자 포인터와 함수에 대한 흥미로운 여정을 떠날 거예요. 프로그래밍에 새로운 여러분도 걱정 마세요 – 저는 여러분의 친절한 가이드로, 모든 것을 단계별로 설명해 드릴 거예요. 그럼, 던져볼까요!
C에서 문자 포인터란 무엇인가요?
책 속에 있는 어떤 글자를 가리킬 수 있는 마법의 책갈피를 상상해 보세요. 이것이 바로 C에서 문자 포인터의 역할이에요 – 문자가 저장된 메모리 주소를 저장하는 특별한 변수예요.
저는 초보자 동안 교육을 하면서 학생들에게 메모리를 거대한 동네라고 생각하도록 하곤 했고, 각 집(메모리 위치)은 고유한 주소를 가지고 있어요. 문자 포인터는 특정 글자가 살고 있는 집의 주소를 알고 있는 것과 같아요.
문자 포인터 선언
문자 포인터를 선언하는 것은 간단해요. 이렇게 해요:
char *ptr;
이 줄은 컴퓨터에게 "안녕, 'ptr'라는 포인터를 만들고 싶어. 그 포인터는 문자를 가리킬 거야"라고 말해요.
문자 포인터 초기화
이제 포인터를 선언했으니, 그것이 무엇을 가리킬지 정해볼까요?
char ch = 'A';
char *ptr = &ch;
여기서 우리는 문자 'A'를 만들고, 포인터에 'A'가 메모리에서 어디에 있을지 알려줍니다.
문자 포인터 예제
배운 것을 실제 예제로 적용해 보겠습니다:
#include <stdio.h>
int main() {
char ch = 'B';
char *ptr = &ch;
printf("The character is: %c\n", *ptr);
printf("The address of the character is: %p\n", (void*)ptr);
return 0;
}
이 코드를 실행하면 다음과 같이 보여요:
The character is: B
The address of the character is: [어떤 메모리 주소]
이것을 분석해 보죠:
- 우리는 문자 'B'를 만들고 'ch'에 저장합니다.
- 포인터 'ptr'를 만들고 'ch'를 가리킵니다.
- '*ptr'를 사용하여 ptr가 가리키는 값(즉 'B')을 가져옵니다.
- ptr에 저장된 주소를 인쇄하여 'B'가 메모리에서 어디에 있음을 보여줍니다.
문자 포인터 이해
이제 좀 더 깊이 들어가 봅시다. C에서 문자 포인터는 문자열과 특별한 관계가 있어요. 이 예제를 살펴보죠:
char *str = "Hello, World!";
printf("%s\n", str);
이 코드는 "Hello, World!"를 인쇄합니다. 그러나 어떻게 인가요? C에서 문자열은 null 문자('\0')로 끝나는 문자 배열입니다. 이렇게 문자 포인터를 문자 리터럴과 함께 사용하면 문자열의 첫 번째 글자를 가리킵니다.
문자 배열 접근
이제 문자 포인터를 사용하여 문자 배열의 요소에 접근하는 방법을 살펴보죠:
#include <stdio.h>
int main() {
char str[] = "C Programming";
char *ptr = str;
for(int i = 0; ptr[i] != '\0'; i++) {
printf("%c", ptr[i]);
}
return 0;
}
이 코드는 "C Programming"을 인쇄합니다. 여기서 우리는 포인터를 사용하여 배열의 각 문자에 접근하고 null 문자에 도달할 때까지 반복합니다.
문자 포인터 함수
이제 문자 포인터와 함께 사용하는 일반 함수를 탐구해 보죠. 이 표를 참고하여 쉽게 이해할 수 있도록 정리했습니다:
함수 | 설명 | 예제 |
---|---|---|
strlen() | 문자열의 길이를 계산합니다 | size_t len = strlen(str); |
strcpy() | 하나의 문자열을 다른 문자열로 복사합니다 | strcpy(dest, src); |
strcat() | 두 문자열을 연결합니다 | strcat(str1, str2); |
strcmp() | 두 문자열을 비교합니다 | int result = strcmp(str1, str2); |
이 함수들을 실제로 사용해 보죠:
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello";
char str2[] = " World!";
char str3[20];
printf("Length of str1: %lu\n", strlen(str1));
strcpy(str3, str1);
printf("str3 after strcpy: %s\n", str3);
strcat(str1, str2);
printf("str1 after strcat: %s\n", str1);
if(strcmp(str1, "Hello World!") == 0) {
printf("Strings are equal\n");
}
return 0;
}
이 코드는 문자 포인터와 함께 사용하는 일반 문자열 함수를 보여줍니다.
그리고 이것이 모두에요! C에서 문자 포인터와 함수의 기본을 다루었어요. 기억해요, 연습이 실력을 만든다는 말이 있어요. 이 개념들을 실험해 볼 때까지 두려워 마세요. 즐거운 코딩!
Credits: Image by storyset