>백엔드 개발 >C++ >`sizeof(void)`는 C 또는 C에서 void 유형의 크기를 알려줍니까?

`sizeof(void)`는 C 또는 C에서 void 유형의 크기를 알려줍니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 20:05:27982검색

Does `sizeof(void)` tell us the size of the void type in C or C  ?

잡히지 않는 공극의 크기

질문:

C 또는 C에서 공극 유형의 크기를 결정할 수 있습니까? ? 다음 코드를 고려하십시오.

void *p = malloc(sizeof(void));
확장: GCC에서 sizeof(void)가 1을 반환하는 경우 p가 처음에 유지되면 포인터 p는 p 이후에 0x2346으로 증가합니다. 0x2345?

답변:

void 유형은 근본적으로 크기가 부족하여 표현식 sizeof(void)를 의미 없게 만들고 컴파일 오류로 이어집니다. C에서는 엄격히 금지됩니다.

예기치 않은 발견:

놀랍게도 GNU C에서 컴파일할 때 sizeof(void)는 1을 산출합니다. 그러나 이 동작은 제한적입니다. GNU C에 적용되며 C 또는 기타에서는 관찰되지 않습니다.

의미:

GNU C의 예상치 못한 반환 값에도 불구하고 void는 크기가 없는 유형으로 남아 있다는 점에 유의하는 것이 중요합니다. 예제의 p와 같은 void에 대한 포인터는 실제 포인터이며 다른 포인터처럼 증가될 수 있습니다. 확장 질문의 증분 연산은 예상대로 작동하며 p는 사용 가능한 다음 메모리 주소를 가리킵니다.

위 내용은 `sizeof(void)`는 C 또는 C에서 void 유형의 크기를 알려줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.