开发平台(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); 这样子啊, 上上行少一个 *, 总之意思应该到了