我自學自己從書中編程。目前的任務是我必須通過一個不返回任何內容的函數(我假設的一個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樣式數組是可能的。也許比你的任務更先進一些,但更安全。 –