가능한 중복은 :
Sizeof doesn't return the true size of variable in C
C -> sizeof string is always 8sizeof가 C에서 같은 문자열에 대해 다른 값을 반환하는 이유는 무엇입니까?
SIZEOF는 밖으로 6 인쇄 :
printf("%d\n", sizeof("abcde"));
그러나 그것은 밖으로 4 인쇄 :
,432 10누군가 설명 할 수 있습니까?
가능한 중복은 :
Sizeof doesn't return the true size of variable in C
C -> sizeof string is always 8sizeof가 C에서 같은 문자열에 대해 다른 값을 반환하는 이유는 무엇입니까?
SIZEOF는 밖으로 6 인쇄 :
printf("%d\n", sizeof("abcde"));
그러나 그것은 밖으로 4 인쇄 :
,432 10누군가 설명 할 수 있습니까?
문자열 리터럴 "abcde"
은 배열입니다. 널 (NULL) 종결자를 포함하여 6 바이트 길이입니다.
char*
유형의 변수는 문자에 인 포인터입니다. 크기는 32 비트 시스템에서 4 바이트 인 포인터의 크기입니다. sizeof
은 컴파일 시간 작업 †이므로 변수 유형 (이 경우 char*
) 만 봅니다. 무엇이 지적되고 있는지 전혀 모른다. 가변 길이 배열의 C99 언어 표준
첫 번째 예에 도입 된 기능의 경우를 제외하고
는 †, 일반 문자열의 길이를 반환sizeof()
. 여기에 있기 때문에
printf("%d\n", sizeof("abcde"));
은 NULL의 6 바이트가 긴 고려하여, 문자열입니다.
및
char* str = "abcde";
printf("%d\n", sizeof(str));
는
:-) 따라서 4 바이트의 32 비트를 필요로하는 포인터