【发布时间】:2020-11-16 06:59:35
【问题描述】:
我看到一些代码通过指针传递一些结构到一个不会改变指针指向的值的函数,比如这个:
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);
这样做的意义何在,而不仅仅是按值传递?
【问题讨论】:
-
C中没有引用传递,只有值和指针传递
-
@kaylum 是的,谢谢
-
@Jorengararar 传递“按指针”是按值传递...
-
@e2-e4 通过引用传递也是如此。当然是按值传递,因为你需要传递指针值,但它不是你想要操作的实际值。您使用中间人(指针)来传递实际数据,因此称为指针传递。
-
@Jorengarenar:在讨论 C 时,“按引用传递”意味着按指针传递。这是 C++ 创建引用类型之前的长期用法,当 C++ 使用这个词时,它在 C 中并没有变得不正确。 C 标准使用“引用”来表示通过指针引用对象的行为;见我的comments below。
标签: c pointers parameter-passing pass-by-reference