이 작업에는 함수에 대한 입력으로 배열을 수신하고 데이터를 추출하는 작업이 포함됩니다. 그것으로부터 새로운 배열을 출력으로 생성합니다. 겉으로는 단순해 보이지만 C는 이 작업에 특정 복잡성을 도입합니다.
무엇보다도 C에서 내장 배열을 직접 반환하는 것이 불가능하다는 점에 유의하는 것이 중요합니다. 고정되고 하드 코딩된 특성으로 인해 전달될 수 있는 객체로 취급되지 않습니다. 이는 다른 언어에 익숙한 프로그래머에게는 혼란스러울 수 있습니다.
이 제한을 피하려면 다음 접근 방식을 고려하십시오.
다음은 두 가지 접근 방식을 모두 보여주는 예시 코드 조각입니다.
// STL Vector Example std::vector<int> myfunction(const std::vector<int>& my_array) { std::vector<int> f_array(my_array); // Data manipulation... return f_array; } // Boost Array Example boost::array<int, 2> myfunction(const boost::array<int, 2>& my_array) { boost::array<int, 2> f_array; f_array[0] = my_array[0]; f_array[1] = my_array[1]; // Data manipulation... return f_array; }
이 예제에서는 STL 벡터 생성자와 Boost 배열 멤버 함수를 활용하여 데이터 복사를 단순화합니다. process.
추가로 주목해야 할 점은 제공된 원래 코드의 버그입니다.
int myfunction(int my_array[1])
단일 요소로 my_array를 선언했음에도 불구하고 코드는 다음을 시도합니다. 두 요소(my_array[0] 및 my_array[1])에 액세스합니다. 이는 전형적인 인덱스 범위를 벗어난 오류입니다. 적절한 선언은 다음과 같아야 합니다.
int myfunction(int my_array[2])
위 내용은 C의 함수에서 새 배열을 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!