질문: "void"의 정의되지 않은 크기 이해
C 프로그래밍에서 "void" 키워드는 유형이 없음을 나타냅니다. 이는 "void"의 크기가 무엇인지 묻는 질문을 제기합니다.
답변:
"void" 유형은 C에서 정의된 크기가 없습니다. 개체 또는 포인터에 대한 유효한 유형이므로 이를 사용하려고 하면 컴파일 오류가 발생합니다. 특히
void n;
문은 허용되지 않는 void 유형의 변수를 선언하려고 시도하므로 유효하지 않습니다.
확장: "를 사용한 할당 및 포인터 산술 void" 포인터
"void"는 크기가 없지만 포인터의 유형으로 사용할 수 있습니다. 그러나 이러한 포인터는 데이터의 특정 유형이나 크기를 가리키지 않습니다.
void *p = malloc(sizeof(void));
문은 "void"에 메모리를 할당하려고 하기 때문에 컴파일 시간 오류가 발생합니다. " 유형은 무의미합니다. malloc 함수에는 메모리를 할당하기 위한 유효한 데이터 유형이 필요합니다.
GCC에서 sizeof(void) 표현식은 놀랍게도 1로 평가됩니다. 이는 "void"에 크기를 할당하는 것처럼 보일 수 있지만 이는 단지 의존해서는 안 되는 구현 세부 사항입니다.
또한 "void" 포인터의 포인터 산술 p는 정의되지 않았으므로 사용해서는 안 됩니다. p가 가리키는 데이터의 유형을 알 수 없기 때문에 포인터가 증가한다는 것이 무엇을 의미하는지 판단할 수 없기 때문입니다.
위 내용은 C에서 \'void\'의 크기는 얼마입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!