질문: "void"의 정의되지 않은 크기 이해
C 프로그래밍에서 키워드 "void"는 유형이 없음을 나타냅니다. 이는 다음과 같은 질문을 제기합니다: "void"의 크기는 얼마입니까?
답변:
"void" 유형은 C에서 정의된 크기가 없습니다. 개체 또는 포인터에 대한 유효한 유형이므로 이를 사용하려고 하면 컴파일 오류가 발생합니다. 특히,
void n;
문은 허용되지 않는 void 유형의 변수를 선언하려고 하므로 유효하지 않습니다.
확장: "void" 포인터를 사용한 할당 및 포인터 산술
"void"에는 크기가 없지만 포인터 유형으로 사용할 수 있습니다. 그러나 이러한 포인터는 데이터의 특정 유형이나 크기를 가리키지 않습니다.
문:
void *p = malloc(sizeof(void));
results "void" 유형에 메모리를 할당하려는 시도가 무의미하기 때문에 컴파일 타임 오류가 발생합니다. malloc 함수에는 메모리를 할당하기 위해 유효한 데이터 유형이 필요합니다.
GCC에서 sizeof(void) 표현식은 놀랍게도 1로 평가됩니다. 이는 "void"에 크기를 할당하는 것처럼 보일 수 있지만 이는 단지 의존해서는 안 되는 구현 세부 사항입니다.
또한 "void" 포인터의 포인터 산술 p는 정의되지 않았으므로 사용해서는 안 됩니다. 이는 p가 가리키는 데이터 유형을 알 수 없기 때문에 포인터 증가가 무엇을 의미하는지 판단할 수 없기 때문입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3