C의 포인터 크기 이해
"포인터의 크기는 포인터가 가리키는 유형의 크기에 따라 달라지나요?"라는 질문이 생깁니다. , 아니면 포인터가 항상 고정된 크기를 유지합니까?" 중복 질문을 토대로 이 개념을 자세히 살펴보겠습니다.
C에서 포인터는 일반적으로 고정된 크기를 갖습니다. 32비트 실행 파일에서는 일반적으로 32비트를 차지합니다. 그러나 이전 버전의 Windows에서는 16비트와 32비트 포인터를 구별해야 하는 등의 예외가 있습니다.
다음 코드 조각을 고려하세요.
int x = 10; int *xPtr = &x; char y = 'a'; char *yPtr = &y; std::cout << sizeof(x) << "\n"; std::cout << sizeof(xPtr) << "\n"; std::cout << sizeof(y) << "\n"; std::cout << sizeof(yPtr) << "\n";
이에서 시나리오의 출력은 다음과 같습니다.
포인터가 일반적으로 일정한 크기를 가지므로 코드에서 이 가정에 의존하는 것은 현명하지 않습니다. 프로그램이 특정 크기의 포인터에 의존하는 경우 항상 명시적으로 확인하십시오.
함수 포인터는 주목할 만한 예외입니다. 크기는 특정 시스템이나 컴파일러에서 사용하는 호출 규칙에 따라 달라질 수 있습니다. 함수 포인터에 대한 추가 정보는 'Jens'가 제공한 응답을 참조하세요.
위 내용은 C의 포인터는 가리키는 데이터 유형에 관계없이 고정된 크기를 갖습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!