首页 > 解决方案 > 为什么要通过指针传递给 C 函数?

问题描述

我看到一些代码通过指针传递一些结构到一个不会改变指针指向的值的函数,比如这个:

typedef struct __spi_handle_t {
    uint16_t  TxXferSize;  /* SPI Tx transfer size */
    uint16_t  RxXferSize;  /* SPI Rx transfer size */
    uint16_t  RxXferCount; /* SPI Rx Transfer Counter */
} spi_handle_t;

void hal_spi_init(spi_handle_t *spi_handle);

这样做有什么意义,而不仅仅是按价值传递?

标签: cpointersparameter-passingpass-by-reference

解决方案


结构可能非常大,因此尝试按值传递它们可能会导致效率低下。

通过将指针传递给结构,它将开销减少到只有一个指针。


推荐阅读