C - 丢弃指针参数

时间:2014-12-05 19:05:30

标签: c pointers parameters

我不确定如何说出这个问题,所以我将举例说明我的目标。

我有一个函数可以从FIFO中获取下一个字节。

void fifoGet(uint8_t * byte) {
   *byte = somefunction();
}

我正在创建一个刷新FIFO的功能

void fifoFlush(void) {
    uint8_t i;
    uint8_t discardByte;

    for (i=0; i<fifoLength; i++) {
        fifoGet(&discardByte);
    }

}

我想知道的是,因为我不需要那个discardByte,我可以绕过分配那个内存并将空指针传递给fifoGet()吗?

这样的东西
void fifoFlush(void) {
    uint8_t i;

    for (i=0; i<fifoLength; i++) {
        fifoGet(&void);
    }

}

2 个答案:

答案 0 :(得分:3)

不,void方法会导致程序的行为未定义,因为您将取消引用指向未知内存的指针。

您使用discardByte可能是最好的选择。

答案 1 :(得分:1)

将结构更改为:

不会花太多时间
uint8_t fifoGet() {
   return somefunction();
}

void fifoFlush(void) {
    uint8_t i;

    for (i=0; i<fifoLength; i++) {
        fifoGet();
    }

}