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)
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력