簡體   English   中英

將數組設置為未知大小的其他數組

[英]Set an array to different array of unknown size

所以我一直在為arduino編程,這是c ++的一種變體。 我一直在編寫一個程序,以便在4位七段顯示器的每個數字上打勾。 我在將pins []設置為不同長度的不同數組時遇到了麻煩。

例如,顯示1表示將打開2個引腳,它們在數組int one[] = {1,2}; 並且顯示4需要四個pin int four[] = {1,2,3,4};

我一直在嘗試的是:

int pins[] = null;
int one[] = {1,2};
int four[] = {1,2,3,4};
switch(num) {
    case 1: pins = one; break;
    case 4: pins = four; break;
}

但是,這已經引起了問題,並且不允許我上傳它,因為事情到處都是。

我對c ++的了解有限,只是對c ++的了解非常了解。

我覺得我在給鯊魚喂食時沒有足夠的保護,這在我的代碼中有些困擾了我。

我的問題是如何初始化數組,然后再進行更改?

如所寫,由於pins沒有定義的大小,因此無法編譯,並且不允許將一個數組分配給另一個不同大小的數組。 但是,可以使用指向數組的指針來實現您要嘗試執行的操作:

int one[] = {1,2};
int four[] = {1,2,3,4};
int* pins = nullptr; // use NULL if your compiler doesn't support C++11.
size_t pinslen = 0;

switch (num) {
case 1:
    pins = one;
    pinslen = sizeof one;
    break;
case 4:
    pins = four;
    pinslen = sizeof four;
    break;
}

int one[] = {1,2}; int four[] = {1,2,3,4}; 不是相同的類型,我們有int one[2]int four[4] 它們都可能衰減為int*但您會丟失大小信息,應自行保留大小。

一種可能是使用std::vector ,如下所示:

std::vector<int> one = {1, 2};
std::vector<int> four = {1, 2, 3, 4};
std::vector<int>* pins = nullptr;
switch (num) {
    case 1: pins = &one; break;
    case 4: pins = &four; break;
}

對於C ++ 03:

const int c_one[] = {1, 2};
const int c_four[] = {1, 2, 3, 4};
std::vector<int> one(c_one, c_one + 2);
std::vector<int> four(c_four, c_four + 4);
std::vector<int>* pins = 0;// or NULL
switch (num) {
    case 1: pins = &one; break;
    case 4: pins = &four; break;
}

另外,您可能希望復制大頭針而不使用指針,例如:

const int one[] = {1, 2};
const int four[] = {1, 2, 3, 4};
std::vector<int> pins;
switch (num) {
    case 1: pins.assign(one, one + 2); break;
    case 4: pins.assign(four, four + 4); break;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM