46.6 연습문제: 문자열 포인터 반환하기

다음 소스 코드를 완성하여 "Mars"가 출력되게 만드세요.

practice_return_string.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

______getName()
{
    char *str = malloc(sizeof(char) * 20);

    strcpy(str, "Mars");

    return str;
}

int main()
{
    char *name;

    name = getName();

    printf("%s\n", name);

    free(name);

    return 0;
}

실행 결과

Mars

정답

char *
또는
void *

해설

main 함수에서는 getName 함수의 반환값을 문자열 포인터에 저장한 뒤 "Mars"를 출력하고 있습니다. 그리고 getName 함수에서는 문자열 포인터에 메모리를 할당한 뒤 반환하고 있습니다. 따라서 getName의 반환값 자료형은 char *getName()과 같이 문자열 포인터로 지정하면 됩니다.

반환값 자료형으로 void *도 사용할 수 있습니다. 이때는 char 포인터가 void 포인터로 자동 변환되고, 다시 함수가 호출되었을 때 char 포인터에 저장됩니다.