簡體   English   中英

Function 在 C++ 中返回損壞的數組

[英]Function returns corrupted Array in C++

我已經閱讀了一些舊線程並測試了一些想法,但我的問題仍然存在,所以這就是我想要的:我需要一個 function,它返回一個固定大小為 181 個 integer 值的簡單數組。

經過一些測試,我有了這個 function:

int *Sonar::scan(int *distances) {
    // Scanning
    for (int i = 0; i <= 180; i++) {
        // Rotates sonar
        //this->rotate(i);
        // Gets the distance
        //distances[i] = this->getDistance();
        distances[i] = i;
    }
    // Returns
    return distances;
}

並這樣稱呼它:

            // Sonar
            case 's':
                int distances[181];
                *distances = sonar.scan(distances);
                for (int i = 0; i <= 180; i++) {
                    Serial.println(String(i) + ": " + String(distances[i]));
                }
                break;

但我得到了這個結果:

0: 1898
1: 1
2: 2
3: 3
4: 4
...

索引 0 的值一直被破壞。 那我犯了什么錯誤?

非常感謝您的幫助: :-)

當您執行以下操作時,數組的第一個元素將被指向數組的指針覆蓋:

*distances = sonar.scan(distances);

那是因為您使用*distances取消引用數組,從而引用第一個元素。 然后,您使用從scan方法返回的內容(指向數組的指針)分配給它。

只是在做:

sonar.scan(distances);

會給出你期望的結果。

無需從方法返回,因為您通過一種引用形式(指針)傳遞數組,這意味着數組正在原地更改。

暫無
暫無

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

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