질문:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!