我自学自己从书中编程。目前的任务是我必须通过一个不返回任何内容的函数(我假设的一个void函数)来将一个带有两个下标的数组放在一起,并递归地打印每个元素。将一个数组传递给void函数,并递归地打印元素
#include <iostream>
#include <array>
#include <iomanip>
#include <string>
#include <cstddef>
using namespace std;
void printArray (int source, int a, int b){
if (a < b){
cout << source[a] << " ";
printArray(source, a + 1, b);
}
}
int main(){
const array<int, 10> theSource = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int al = 0;
int bl = theSource.size();
printArray(theSource, al, bl);
}
当我试图做到这一点,我得到两个错误。
11|error: invalid types 'int[int]' for array subscript|
22|error: cannot convert 'const std::array<int, 10u>' to 'int' for argument '1' to 'void printArray(int, int, int)'|
所以我试图改变空隙...
void printArray (int source[], int a, int b)
,也...
void printArray (int *source, int a, int b){
但仍然得到错误...
22|error: cannot convert 'const std::array<int, 10u>' to 'int' for argument '1' to 'void printArray(int, int, int)'|
是否有不同的方式来通过函数放置数组?
任务是...
(打印数组)编写递归函数printArray接受一个数组,起始标和结束下标作为参数,返回任何内容并打印阵列。当起始下标等于结尾下标时,该函数应停止处理并返回。
您也可以使用模板来推导出数组边界。 std :: array和c样式数组是可能的。也许比你的任务更先进一些,但更安全。 –