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 언어에 익숙해지면 이 부분은 자연스럽게 습득하게 됩니다.