我在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