크기를 명시적으로 지정하지 않고 다른 함수에 전달하면서 배열 크기를 이해하는 것은 C에서 어려울 수 있습니다. 이 질문은 배열을 인수로 받는 함수 내에서 루프를 실행해야 할 필요성에서 발생했습니다.
NULL 포인터 값에 대한 조건부 검사를 사용하는 초기 접근 방식은 예상치 못한 값이 존재할 가능성이 있어 불충분한 것으로 판명되었습니다.
C의 효과적인 솔루션은 템플릿을 활용하고 다음과 같이 배열을 전달하는 것입니다. 참조:
template <typename T, int N> void func(T (&a)[N]) { for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements }
배열 크기 N을 템플릿 매개변수로 지정함으로써 함수는 작업 중인 정확한 배열 크기를 알 수 있습니다. 이 접근 방식을 사용하면 루프가 의도한 요소 수만큼 반복됩니다.
이 템플릿 함수를 활용하려면 다음과 같이 배열을 전달할 수 있습니다.
int x[10]; func(x);
이 접근 방식은 포인터가 아닌 배열에만 작동한다는 점에 유의해야 합니다. 보다 다양한 솔루션을 위해서는 std::Vector와 같은 표준 라이브러리 컨테이너를 사용하는 것이 더 바람직할 수 있습니다.
위 내용은 C에서 함수 인수로 전달된 배열의 크기를 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!