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 포인터에 저장됩니다.