C에서 함수에 배열을 전달할 때 sizeof() 이상
C에서 sizeof() 연산자는 배열과 관련하여 다르게 작동합니다. 메인 함수에서 사용될 때보다 함수에 전달됩니다. 이러한 불일치는 초보자에게 혼란스러울 수 있습니다.
올바른 배열 전달
배열을 함수에 올바르게 전달하려면 다음을 사용하여 참조로 전달하는 것이 중요합니다. 구문:
int length_of_array(int (&arr)[N]);
여기서:
Sizeof() 사용 함수
함수 내에서 sizeof()를 사용할 때 다음이 적용됩니다.
sizeof(arr) == N * sizeof(int);
설명:
잘못된 배열 전달 문제
제공된 코드 조각에서 length_of_array() 함수가 실수로 포인터로 배열을 전달합니다. , 좋다 this:
int length_of_array(int some_list[]);
이 잘못된 전달 방법으로 인해 다음 문제가 발생합니다.
템플릿을 사용한 해결 방법
이 제한을 극복하려면 다음과 같은 템플릿 기반 접근 방식을 사용할 수 있습니다. this:
template<size_t N> int length_of_array(int (&arr)[N]) { std::cout << N << std::endl; // Will output the correct array size return N; }
핵심 사항:
두 방법의 근본적인 차이점은 배열을 참조로 전달하는 것과 포인터로 전달하는 것입니다. 전자는 배열 크기에 대한 정보를 유지하지만 후자는 그렇지 않습니다.
위 내용은 C에서 배열을 함수에 전달할 때 sizeof()가 다르게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!