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