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

C에서 함수 인수로 전달된 배열의 크기를 어떻게 확인할 수 있습니까?

DDD
DDD원래의
2024-12-20 15:41:13734검색

How Can I Determine the Size of an Array Passed as a Function Argument in C  ?

함수 인수로 전달될 때 배열 크기 결정

크기를 명시적으로 지정하지 않고 다른 함수에 전달하면서 배열 크기를 이해하는 것은 C에서 어려울 수 있습니다. 이 질문은 배열을 인수로 받는 함수 내에서 루프를 실행해야 할 필요성에서 발생했습니다.

NULL 포인터 값에 대한 조건부 검사를 사용하는 초기 접근 방식은 예상치 못한 값이 존재할 가능성이 있어 불충분한 것으로 판명되었습니다.

템플릿을 사용한 C 접근 방식

C의 효과적인 솔루션은 템플릿을 활용하고 다음과 같이 배열을 전달하는 것입니다. 참조:

template <typename T, int N>
void func(T (&amp;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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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