> 백엔드 개발 > C++ > 포인터를 사용할 때 C에서 배열의 크기를 어떻게 얻을 수 있습니까?

포인터를 사용할 때 C에서 배열의 크기를 어떻게 얻을 수 있습니까?

Patricia Arquette
풀어 주다: 2025-01-05 08:51:41
원래의
289명이 탐색했습니다.

How Can I Get the Size of an Array in C   When Using Pointers?

C의 포인터에서 배열 크기 가져오기

C에서 배열을 사용할 때 일반적인 작업 중 하나는 배열의 크기나 수를 결정하는 것입니다. 배열 내의 요소. 그러나 포인터를 통해 배열에 액세스할 때는 까다로울 수 있습니다.

포인터에서 배열 크기 결정 문제

다음 함수 헤더를 고려하세요.

int largest(int *list, int highest_index);
로그인 후 복사

이 함수는 정수 배열에서 가장 큰 정수를 반환하도록 설계되었습니다. 포인터를 사용하여 '목록' 배열의 요소 수를 확인하려고 할 때 문제가 발생합니다.

잘못된 방법

시도된 몇 가지 잘못된 방법은 다음과 같습니다.

int i = sizeof list/sizeof(int); //returns incorrect value
int i = list.size(); // does not compile
로그인 후 복사

이 메소드는 잘못된 값을 반환하거나 배열이 본질적으로 포인터.

올바른 접근 방식: 배열 크기를 인수로 전달

올바른 접근 방식은 배열 크기를 함수에 대한 추가 인수로 전달하는 것입니다. 이를 통해 함수는 배열의 요소 수를 결정할 수 있습니다.

예:

static const size_t ArraySize = 5;
int array[ArraySize];
func(array, ArraySize);
로그인 후 복사

이 예에서 'func' 함수는 배열 포인터와 배열 크기를 다음과 같이 사용합니다.

이유

C에서는 다음과 같은 경우 배열이 포인터로 붕괴되는 것을 허용합니다. 함수 인수로 전달됩니다. 그러나 포인터 자체에는 배열 크기에 대한 정보가 포함되어 있지 않습니다. 배열 크기를 인수로 전달함으로써 함수는 배열의 요소 수를 정확하게 결정할 수 있습니다.

결론

포인터를 통해 배열로 작업할 때, 포인터에는 배열 크기에 대한 고유 정보가 없다는 점을 고려하는 것이 중요합니다. 해결책은 이 정보가 필요한 함수에 배열 크기를 추가 인수로 전달하는 것입니다.

위 내용은 포인터를 사용할 때 C에서 배열의 크기를 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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