>백엔드 개발 >C++ >C에서 포인터로 전달된 배열의 크기를 어떻게 얻을 수 있습니까?

C에서 포인터로 전달된 배열의 크기를 어떻게 얻을 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-22 03:52:12265검색

How Can I Get the Size of an Array Passed as a Pointer in C  ?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.