在C中,我想一個uint16_t數組傳遞到該需要uint8_t的函數:通行證uint16_t數組函數,它uint8_t *
bool fctn(uint8_t *data, size_t length);
我有這樣的陣列,該陣列是一個結構內:
typedef struct sStruct sStruct;
struct sStruct{
uint16_t d[10];
}
sStruct myStruct;
所以我做的:
void test(sStruct structData) {
fctn((uint8_t*)structData->d[0], 10*sizeof(uint16_t));
}
長度不是問題在這裏,它傳遞數組。如果這個數組不是指針已經 我收到「錯誤:從不同大小的整數轉換爲指針」,我怎麼能讓它看起來像一個uint8_t數組?就這個函數而言,一個uint16_t數組看起來就像一個長度爲uint8_t的雙精度數組,但我不知道如何告訴編譯器這個......當輸入已經是一個指針時。
如果數組「d」不是一個結構裏面,但剛一說全球性的,我只是做
fctn((uint8_t*)d, 10*sizeof(uint16_t));
怎樣做功能通過一個傳遞結構裏的數組的正確方法?
d [0]是'uint16_t',而不是'uint16_t *'。通過'(uint8_t *)d' –
謝謝,這清除了這個問題。我已經修改了第二個問題的問題。 –
' - >'運算符只適用於指針。你可以像'd''一樣使用'structData.d',它沒有區別。 –