我在C/C++編程方面經驗不足,所以我要求解釋。我有全局數組聲明如下。 ASAK它位於進程內存環境中初始化全局內存的獨立內存部分。從函數返回指向全局數組的指針
Sensor sensorsArray[SENSORS_COUNT] = {dhtTempSensor, dhtHumSensor, dallasTempSensor, waterLevelSensor};
我需要找到此數組中的元素並返回它的指針(因爲我要改變它的值)。我寫了這樣的功能。
Sensor* getSensorById(uint32_t id) {
for (int i = 0; i < SENSORS_COUNT; i++) {
Sensor* current = &sensorsArray[i];
if (current->sensorId == id) {
return current;
}
}
}
它將正常工作,我不知道current
指針,它是在棧上分配的,因此它在功能範圍,將它從棧函數結束後POP操作?或者它會正常工作。
我的意思不是指針(使用& sensorsArray [i]獲取的數組元素的地址),而是包含erray元素地址的當前指針變量,是否會被調用。
請建議如何在這種情況下如何做的最佳方式。 Thx。
我想你在做什麼是好的。我只是添加一個'返回nullptr;'在功能結束時,如果沒有找到傳感器ID – marom
如果找不到ID? –
爲什麼不使用['std :: find'](http://en.cppreference.com/w/cpp/algorithm/find)? – NathanOliver