2012-12-01 48 views
1

對於其中一個分配,我需要創建一個重載函數print打印一個數組的元素或所有元素。我打印整個陣列沒有問題:重載函數print

for(int i = 0; i < size; i++) 
    cout << list [ i ] <<endl; 

但是,如何使相同的功能打印只有一個特定的元素? 我看到它的方式是詢問用戶要打印什麼,無論是一個元素還是所有數字。或者我在這裏錯過了什麼?

+0

我假設你使用C++?如果是這樣,請將其添加到問題的標籤中。 –

+0

永遠不要理解間隔出來的'\ [\]'約定 –

+0

數組是固定大小還是動態分配? – juanchopanza

回答

1

打印整個陣列

print (const int *arr) const 
{ 
    // code you have written 
} 

印刷特定數組元素

print (const int *arr, const int index)const // overloaded function 
{ 
    // validate index and print arr[index] 
    if (index >=0 && index<size) 
     cout << *(arr+index) 

} 
0

(由於您正在談論過載,我想你正在使用C++。)

甲函數重載另一個不再是同一個函數。就你而言,你需要一個打印一個元素的函數。換句話說,只有一個int

void print(int num) 
{ cout << num << endl; } 

你可以提供過載將範圍並打印出來:

(請注意,在一個範圍內,end元素是指「一個過去的結束的範圍」,並且不應當被打印)的兩個函數

void print(int* begin, int* end) 
{ 
    while (begin != end) { 
     cout << *begin << endl; 
     // Or if you want to follow correct decomposition design: 
     // print(*begin); 
     ++begin; 
    } 
} 

用法:

int array[3] = {1, 2, 3}; 
print(array[0]); 
print(array, array + 3); 
+0

C沒有函數重載嗎? –

+0

@LightnessRacesinOrbit Nope。 –