c언어 main에서는 sizeof(buf)가 500인데 함수 안에서는 sizeof(buf)가4로 나오는 이유

조회수 326회
#include <stdio.h>
void Load(char buf[])
{
    FILE* f = fopen("Test.txt", "r");
    fread(buf, sizeof(buf),1, f);
    printf("%s\n", buf);
    fclose(f);
}
void main()
{
    char buf[500] = {0};
    Load(buf);
}

main에서는 sizeof(buf)가 500인데 함수 안에서는 sizeof(buf)가4로나와요 이유를 알수 있을까요??

1 답변

  • main에서의 buf는 char buf[500]입니다. 이 때, sizeof(buf)는 500입니다.

    함수 안에서의 buf는 char buf[]를 나타내고 이것은 main의 buf의 주소값만 전달받는 포인터 변수입니다. 포인터 변수는 일반적으로 그 크기가 4바이트라서 함수 안에서 sizeof(buf)가 4인겁니다.

    함수 형태를 아래처럼 고치고, main함수에서 Load(buf, sizeof(buf))로 실행하여 함수 내부에서 size 값을 사용하는 것이 일반적인 처리입니다.

    void Load(char buf[], int size)
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)