如何将“不必要的”指针传递给函数?

时间:2013-09-27 10:26:31

标签: c pointers

此功能由API提供给我:

void GetTime(uint8_t*, uint8_t*, uint8_t*, uint8_t*, uint8_t*, uint8_t* );

GetTime通过写入这些指针来返回时间。问题是,我只需要写入其中一个指针的值。如果我可以控制GetTime,我要么检查指针是NULL还是返回结构,但我不能。

这是我目前的解决方案,忽略了虚拟*指针:

uint8_t *seconds, *dummy0, *dummy1, *dummy3, *dummy4, *dummy5;
GetTime( dummy0, dummy1, dummy3, dummy4, dummy5, seconds );

有没有更简洁的方法来解决这个问题而不会出现混乱?

3 个答案:

答案 0 :(得分:7)

首先,你做错了,你需要分配一个uint8_t并传递指针。

其次,您可以为所有人使用相同的假人:

uint8_t seconds, dummy;
GetTime( &dummy,&dummy,&dummy,&dummy,&dummy, &seconds );

最后,API可能会接受NULL。这有用吗?:

uint8_t seconds;
GetTime( NULL,NULL,NULL,NULL,NULL, &seconds );

答案 1 :(得分:2)

如前所述,你可以使用这样的功能来帮助你调用GetTime

uint8_t dummy[5];
uint8_t seconds;

GetTime(dummy, dummy + 1, dummy + 2, dummy + 3, dummy + 4, &seconds);

return seconds;

如果您知道GetTime可以正常使用非唯一的指针,那么您可以放弃这个(但是,再次,您只需要保存4个字节):

uint8_t dummy, seconds;

GetTime(&dummy, &dummy, &dummy, &dummy, &dummy, &seconds);

return seconds;

答案 2 :(得分:1)

编写一个辅助函数,调用此函数提供虚拟指针,并且只接受一个指针 - 您关心的指针。