開發平台(Platform): (Ex: Win10, Linux, ...)
LINUX
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
宣告一個struct
typedef struct {
uint8_t var_a;
uint8_t var_b;
} test_entry_t;
宣告一個指標
test_entry_t *p_entry
宣告一個function
function testF(test_entry_t *p_entry){
uint8_t var1 = 0x01
uint8_t var2 = 0x02
p_entry->var_a = var1
p_entry->var_b = var2
}
我嘗試用以下方是來call此function
int main(){
test_entry_t *p_entry
testF(&p_entry);
printf("0x%02X\n", p_entry->var_a);
printf("0x%02X\n", p_entry->var_b);
預計輸出結果
0x01
0x02
但是我印出來卻是空的!
想請問各位大大我這段code哪裡寫錯了!
感謝
作者:
LPH66 (-6.2598534e+18f)
2016-12-02 19:13:00你想要讓 testF 填入 p_entry 指向的東西, 那在傳進 testF時就必須要給一個實際上指向那個 struct 的指標你這樣寫變成傳入一個指向指標的指標, 所以就會有問題正確的做法是 test_entry_t entry; testF(&entry);或者如果你的 struct 是 malloc 來的話:test_entry_t *p_entry = (test_entry_t)malloc(...);testF(p_entry); 這樣子啊, 上上行少一個 *, 總之意思應該到了