2014-04-21 3 views
0

이 배열을 참조로 전달하려고하지만 내 코드가 함수를 가져올 수없는 것 같습니다. 도움?참조로 배열을 전달하는 방법은 무엇입니까?

#include <iostream> 
using namespace std; 

void print(int (&array)[], int lower_bound, int upper_bound); 
int main() 
{ 
    // generate array 
    const int SIZE = 20; 
    int array[SIZE]; 
    for (int i = 0; i < SIZE; i ++) array[i] = rand()%500; 
    // end generate array 

    print(array,0,19); 

    return 0; 
} 

void print(int (&array)[], int lower_bound, int upper_bound) 
{ 
    for (int i = lower_bound; i <= upper_bound; i ++) cout << i << " : " << array[i] <<  endl; 
} 
+0

'void print (int array, int lower_bound, int upper_bound); ' – mah

+2

@ 40two 배열은 포인터가 아닙니다. – juanchopanza

+1

@ 40two : 오해를 퍼트 기 전에 [comp.lang.c FAQ] (http://www.c-faq.com/)의 6 항 (대부분 C++에도 적용됨)을 읽어주십시오. 배열은 포인터가 아닙니다. –

답변

0

방법 CPP에 참조 배열을 통과?

당신은 거의 올바른 구문을 가지고,하지만 당신은 배열의 크기, 당신은 하나 개의 크기를 지원해야하는 경우 사용자가 명시 적으로 지정할 수 필요

const int SIZE = 20; 

void print(int (&array)[SIZE], int lower_bound, int upper_bound); 

또는 경우를 추론하는 함수 템플릿을 사용을 다른 크기의 함수가 필요합니다.

template <size_t N> 
void print(int (&array)[N], int lower_bound, int upper_bound) 
{ 
    // code here 
} 

C++에는 더 많은 관용적 솔루션이 있습니다. 하나는 범위를 지정하는 begin 및 one-past-the-end 반복자 (일반 포인터가 수행함)를 전달하는 것입니다. 다른 것들은 고정 크기 배열에 대해 std::array을 사용하고 동적 크기 배열에 대해서는 std::vector을 사용합니다.

관련 문제