2012-12-01 47 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。 –