您好,我有以下代碼:
struct temperatures_t {
char lowTempSetting = 18;
char highTempSetting = 26;
char currentTemp = 23;
};
struct runningState_t {
struct temperatures_t temperatures;
};
struct runningState_t runningState;
void test(runningState_t *runningStateVar) {
runningStateVar->temperatures->lowTempSetting ;
runningStateVar->temperatures->currentTemp = 10;
printf(runningStateVar.temperatures.lowTempSetting);
}
void main() {
test(&runningState);
}
但是在行上出現以下錯誤runningState->temperatures->:
{
"message": "operator -> or ->* applied to \"temperatures_t\" instead of to a pointer type"
}
我也嘗試過變體:
&(runningState)->temperatures->lowTempSetting ;
以及基于我在此答案中看到的內容的其他變體:C 將結構中的嵌套結構傳遞給函式?
但運氣不佳
uj5u.com熱心網友回復:
在 中test,區域引數變數runningState(不要與同名的全域變數混淆)是指向結構物件的指標,因此使用箭頭運算子->來訪問其成員是正確的。
但是,runningState->temperatures是不是一個指標,它是一個真正的結構物件。因此,您必須使用點.來訪問其成員:
runningState->temperatures.lowTempSetting ;
// ^
// Note using dot here
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/339986.html
