48.4 문자열 매개변수 사용하기
함수에서 매개변수로 문자열을 받으려면 다음과 같이 매개변수를 문자열 포인터로 지정하면 됩니다.
parameter_char_pointer.c
#include <stdio.h> void helloString(char *s1) // 반환값 없음, char 포인터 매개변수 한 개 지정 { printf("Hello, %s\n", s1); // Hello, 와 매개변수를 조합하여 문자열 출력 } int main() { helloString("world!"); // Hello, world!: 함수를 호출할 때 문자열을 전달 return 0; }
실행 결과
Hello, world!
먼저 함수를 정의할 때 괄호 안에 char *s1과 같이 매개변수를 문자열 포인터로 지정합니다. 여기서는 printf로 "Hello, " 문자열을 출력하면서 서식 지정자 %s로 매개변수의 값을 함께 출력합니다.
void helloString(char *s1) // 반환값 없음, char 포인터 매개변수 한 개 지정 { printf("Hello, %s\n", s1); // Hello, 와 매개변수를 조합하여 문자열 출력 }
함수를 호출할 때는 "world!"와 같이 문자열을 넣어주면 문자열의 주소가 매개변수에 전달됩니다.
helloString("world!"); // Hello, world!: 함수를 호출할 때 문자열을 전달
다음과 같이 배열 형태의 문자열도 문자열 포인터 매개변수에 전달할 수 있습니다. 이때도 매개변수는 char 포인터로 지정합니다.
parameter_char_array_argument.c
#include <stdio.h> void helloString(char *s1) // 반환값 없음, char 포인터 매개변수 한 개 지정 { printf("Hello, %s\n", s1); // Hello, 와 매개변수를 조합하여 문자열 출력 } int main() { char s1[10] = "world!"; // 배열 형태의 문자열 helloString(s1); // Hello, world!: 함수를 호출할 때 배열 전달 return 0; }
실행 결과
Hello, world!
매개변수로 문자 배열을 받는다는 것을 확실히 해주려면 다음과 같이 매개변수 뒤에 [ ] (대괄호)를 붙여주면 됩니다. 단, 대괄호 안에 들어가는 배열의 크기는 생략합니다.
parameter_char_array.c
#include <stdio.h> void helloString(char s1[]) // 반환값 없음, char 배열을 매개변수로 지정, 크기 생략 { printf("Hello, %s\n", s1); // Hello, 와 매개변수를 조합하여 문자열 출력 } int main() { char s1[10] = "world!"; // 배열 형태의 문자열 helloString(s1); // Hello, world!: 함수를 호출할 때 배열 전달 helloString("world!"); // Hello, world!: 함수를 호출할 때 문자열 전달 return 0; }
실행 결과
Hello, world! Hello, world!
매개변수를 char s1[]과 같이 지정하더라도 배열뿐만 아니라 문자열이나 메모리가 할당된 포인터도 전달할 수 있습니다.
지금까지 함수에서 포인터 매개변수를 사용하는 방법을 배웠습니다. 아무래도 포인터의 특성을 이용하여 함수에서 값을 주고 받는 방식이라 문법이 복잡하고 내용이 어려웠습니다. 당장은 개념을 이해하지 않아도 되며 문법만 외워서 사용해도 됩니다. 나중에 C 언어에 익숙해지면 이 부분은 자연스럽게 습득하게 됩니다.