[英]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.