728x90
반응형
1. 답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* getName()
{
char* ptr = malloc(sizeof(char)*10);
strcpy(ptr, "Neptune");
return ptr;
}
int main()
{
char* name;
name = getName();
printf("%s\n", name);
free(name);
return 0;
}
2. 결과
3. 정리
포인터 반환 함수를 작성할 수 있는지 묻는 문제입니다. main 함수에서 동적 메모리 해제를 확인하였으므로 함수를 작성할 때 동적 메모리 할당이 필요하다는 것을 알 수 있습니다. main 함수에서 char* name을 확인하여 char타입의 포인터 반환을 예상하고 char* getName() 함수를 작성합니다. 이후 malloc함수를 작성하여 동적 메모리를 할당합니다.
여기서 malloc(sizeof(10));을 하게되어 프로그램 error가 발생하였는데, 생각해보면 애초에 sizeof(100)이라는 것 자체가 말이 안됩니다. 숫자 100의 사이즈를 구한다는 의미인데, 말이 안되므로 malloc(sizeof(char)*10); 이렇게 작성을 해주어야합니다.(아니면 malloc(10);으로 작성을 해도 무방합니다) 순간적으로 코드를 줄이고자 sizeof(10)을 진행한 것이었는데 실수를 통해 다시 배우게됩니다.
이후 문자열은 strcpy함수를 통해서 ptr 포인터에 데이터를 넣어주고, ptr 포인터를 반환합니다.
4. 비고
- 코딩 도장 심사문제는 아래 링크 바로가기를 눌러주세요. 간단한 가입 진행 후 이용 가능하므로 참고 부탁드립니다.
- 코딩 도장 문제 링크 바로가기 : 61.11 심사문제: 문자열 포인터 반환하기 (dojang.io)
코딩 도장: 사이트에 로그인
사이트의 강좌를 수강하고 학습 효과를 최대한 높이려면 회원 가입이 필요합니다. '회원 가입' 버튼을 클릭한 후 가입 정보를 입력합니다.입력한 이메일 주소로 확인 메일이 즉시 전송됩니다.이
dojang.io
728x90
반응형
댓글