아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
깨끗한까치166
깨끗한까치16621.01.13

C언어기초) 리턴값 자료형 관련 질문

예를들어 어떤 함수의 설정된 return값 자료형이 int형 일 때,

return (NULL); 을 주면 안되나요?

return (0); 이렇게 주어야 할까요?

NULL은 포인터라고 들었는데 NULL로 리턴해주어도 괜찮은 궁금합니다

55글자 더 채워주세요.
답변의 개수4개의 답변이 있어요!
  • null값은 안됩니다. 포인터(?)위 개념이기 때문에 해당 주소의 값이 비어 있을 뿐이지 0이 입력되어 있으리라는 보장은 할 수 없으니까요... 일반적으로 변수을 선언할 때도 항상,

    int i = 0; 과 같이 초기화해주는 것이 좋습니다.

    그리고 굳이 괄호는 넣지 않으셔도 됩니다.

    도움이 되셨으면 좋겟숩니다.


  • return 0; 을 주어야 합니다.

    그 이유는 이 함수의 자료형이 int 형이기 때문입니다.

    그래서 해당 자료형의 데이타를 return 하게 되는 겁니다.

    그리고 함수의 자료형이 중요한 이유는 자료의 크기를 결정하기 때문입니다.

    즉 같은 0을 반환하더라도 자료의 크기에 따라 메모리에 써지는 크기가 달라지기 때문입니다. 그리고 포인터에서 NULL의 의미는 아무주소를 지정하지 않았다는 의미입니다.

    그래서 문자열 마지막에 항상 NULL이 들어가게 됩니다. C 언어에서 사용하는 printf 구문의 경우도 마지막에 NULL문자를 보고 종료하게 되는 이유도 바로 이때문입니다.

    기본적으로 포인터 변수에 상수값(메모리의 절대주소)을 대입하는 것은 금지되어 있습니다. 유일한 예외는 NULL로 정의되어 있는 0을 대입하는 것으로 0이 대입되어 있는 포인터를 NULL포인터라 부른다. NULL포인터는 실제로 메모리 주소가 0인 곳을 가리키고 있는 것이 아니라 아무 곳도 저장되어 있지 않음을 의미한다. 포인터를 리턴하는 함수들은 에러가 발생했을 경우 대부분 NULL포인터를 리턴합니다.


  • #include <stdio.h>

    int main()

    {

    int *numP = NULL; // 포인터에 NULL 저장

    printf("%p\n", numP); // 00000000

    return 0;

    }

    이런식으로 하시면 될 것 같습니다.

    우선 적으로 포인터 변수에 NULL을 저장 후 프린트로 출력할때 해당 값이 출력되도록 하는 것 입니다.


  • 안녕하세요~!!

    아래와 같은 함수의 리턴값이 int 로 선언되어져 있다면

    데이터 타입 맞춰주시는게 좋을거 같습니다.

    return 0;으로 해주세요.

    NULL 과 0 은 엄밀히 다릅니다!!

    C 혹은 C++ 에서 NULL은 "null pointer constant" (void*)0 으로 정의되어 있습니다.

    즉 NULL은 0 주소를 의미하기에 포인터 변수를 초기화 할때 쓰이는게 좋고요.

    간단히 0은 숫자 0이고

    NULL은 빈 값 혹은 주소값 0을 넣기 위해 사용으로 이해하시면 됩니다.

    int test() {

    ...

    return 0;

    }