> 백엔드 개발 > C++ > C에서는 `sizeof(void)`가 유효하지 않지만 GCC에서는 1로 평가되는 이유는 무엇입니까?

C에서는 `sizeof(void)`가 유효하지 않지만 GCC에서는 1로 평가되는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-16 12:26:03
원래의
761명이 탐색했습니다.

Why is `sizeof(void)` invalid in C, but evaluates to 1 in GCC?

Void 크기 이해

C 프로그래밍에서 키워드 void는 크기가 없는 데이터 유형을 의미합니다. 이 독특한 속성으로 인해 변수 선언이나 메모리 할당 작업에 적합하지 않습니다.

컴파일 오류: 무효 포인터 할당

제공한 코드 조각:

void *p = malloc(sizeof(void));
로그인 후 복사

sizeof(void)는 C에서 유효하지 않은 표현식이므로 컴파일 오류가 발생할 수 있습니다. void 유형 크기 정보가 없으므로 이 작업은 정의되지 않은 상태로 렌더링되므로 컴파일러에서 거부됩니다.

GCC의 Sizeof(void): 예외

놀랍게도 sizeof(void) 표현식은 GNU C 컴파일러(GCC)에서 컴파일됩니다. 이는 단일 바이트 메모리를 나타내는 1로 평가됩니다. 그러나 이 동작은 표준이 아니며 다양한 컴파일러 및 아키텍처에 따라 다릅니다.

Void 포인터를 사용한 포인터 증가

p를 p로 증가시키는 것에 대한 귀하의 질문은 흥미로운 개념을 불러일으킵니다. void에는 크기가 없으므로 p 연산은 의미가 없습니다. 포인터 p는 특정 데이터 유형이나 값을 가리키지 않으므로 이를 증가시켜도 해당 값에 아무런 영향을 미치지 않습니다.

요약하면 C의 void는 크기가 없는 데이터 유형이므로 메모리로 사용할 수 없습니다. 할당 또는 변수 선언. sizeof(void) 표현식은 일반적으로 유효하지 않지만 GCC와 같은 특정 컴파일러에서는 다르게 동작할 수 있습니다. 크기가 부족하기 때문에 p를 사용하여 void 포인터를 증가시키려는 시도는 의미 있는 결과가 없습니다.

위 내용은 C에서는 `sizeof(void)`가 유효하지 않지만 GCC에서는 1로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿