본문 바로가기
[개발자 로드맵]/C

[C언어 코딩 도장 심사문제 답] 61.11_문자열 포인터 반환하기

by Ramrider 2022. 7. 19.
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. 비고

 

코딩 도장: 사이트에 로그인

사이트의 강좌를 수강하고 학습 효과를 최대한 높이려면 회원 가입이 필요합니다. '회원 가입' 버튼을 클릭한 후 가입 정보를 입력합니다.입력한 이메일 주소로 확인 메일이 즉시 전송됩니다.이

dojang.io

 

728x90
반응형

댓글