[问题] 指标传递问题

楼主: blueguan   2016-12-02 19:12:01
开发平台(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); 这样子啊, 上上行少一个 *, 总之意思应该到了
楼主: blueguan   2016-12-02 19:17:00
test_entry_t **p_entry = (test_entry_t)malloc(...);这样吗?
作者: LPH66 (-6.2598534e+18f)   2016-12-02 19:18:00
是转型少了 *...
楼主: blueguan   2016-12-02 19:25:00
est_entry_t *p_entry = (test_entry_t *)malloc(...);这样吗?我改完好像~还是没有把值塞进去
作者: pttworld (批踢踢世界)   2016-12-02 19:40:00
预期输出的正确结果:
楼主: blueguan   2016-12-02 19:47:00
我加入预期输出结果了...
作者: james732 (好人超)   2016-12-02 19:54:00
楼主: blueguan   2016-12-02 20:07:00
感谢各位大大~~已经可以了!!!! 各位太威了..所以我必须要宣告给空间才可以

Links booklink

Contact Us: admin [ a t ] ucptt.com