C의 포인터에서 배열 크기 가져오기
C에서는 포인터로 전달된 배열의 크기를 결정하는 것이 어려울 수 있습니다. 배열은 함수 인수로 전달될 때 배열이 포인터로 붕괴될 수 있는 "배열/포인터 동등성"을 나타냅니다. 이는 배열의 크기를 정확하게 결정하는 문제를 야기합니다.
이 문제를 극복하기 위해 우리는 sizeof()가 포인터의 크기를 반환하므로 의존할 수 없습니다. 포인터의 크기는 포인터의 개수가 아닌 일반적으로 4 또는 8바이트입니다. 배열의 요소. 대신 배열의 크기를 추가 인수로 명시적으로 전달해야 합니다.
해결책:
배열 크기에 대한 매개변수를 포함하도록 함수 헤더를 수정하세요.
int largest(int *list, size_t size)
포인터와 함께 배열의 크기를 전달합니다. 함수:
static const size_t ArraySize = 5; int array[ArraySize]; int result = largest(array, ArraySize);
크기를 명시적으로 전달함으로써 함수는 배열의 요소 수를 적절하게 결정할 수 있습니다.
대체 접근 방식:
원래 배열 변수가 아닌 배열에 대한 포인터만 있는 경우 다음을 사용하여 크기를 계산할 수 있습니다. 공식:
size = sizeof(pointer_variable) / sizeof(array_element_type)
예를 들어 크기를 알 수 없는 정수 배열에 대한 포인터 int *ptr이 있는 경우 다음과 같이 크기를 결정할 수 있습니다.
size = sizeof(ptr) / sizeof(int);
위 내용은 C에서 포인터로 전달된 배열의 크기를 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!