문자 포인터와 함수에 대해 C에서

안녕하세요, 더 나은 프로그래머를 꿈꾸는 여러분! 오늘은 C에서 문자 포인터와 함수에 대한 흥미로운 여정을 떠날 거예요. 프로그래밍에 새로운 여러분도 걱정 마세요 – 저는 여러분의 친절한 가이드로, 모든 것을 단계별로 설명해 드릴 거예요. 그럼, 던져볼까요!

C - Character Pointers and Functions

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: [어떤 메모리 주소]

이것을 분석해 보죠:

  1. 우리는 문자 'B'를 만들고 'ch'에 저장합니다.
  2. 포인터 'ptr'를 만들고 'ch'를 가리킵니다.
  3. '*ptr'를 사용하여 ptr가 가리키는 값(즉 'B')을 가져옵니다.
  4. 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