c - 为什么函数会在作为指针传递给它的参数上使用 "address of"运算符?

标签 c

我是 C 编程语言的新手,我想了解一个函数的意图,该函数接受一个指针参数,但在其上使用运算符的地址,就好像它是函数主体中的变量名一样?传递的参数是结构类型。也就是说,为什么作者选择使用 &lib -> fatfs;而不是 lib->fatfs? “地址”运算符是否用于确保不传递空指针?

void SDCardLib_init(SDCardLib * lib, SDCardLib_Interface * interface)
{
    lib->interface = interface;

    f_mount(0, &lib->fatfs);

    disk_initCallBack(interface);
}

最佳答案

address-of 运算符未应用于指针 lib,而是应用于指向对象的 fatfs 成员。 -> 运算符的优先级高于一元 & 运算符。

这意味着 &lib->fatfs&(lib->fatfs) 相同。这应该更清楚 & 正在获取地址。

关于c - 为什么函数会在作为指针传递给它的参数上使用 "address of"运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406874/

相关文章:

c++ - c/c++ 中的网络拓扑

c - 主要的 AES 加密,子的解密

c - 信号量并发

c - 如何在 C 中舍入 Float 值

C: "tcp_seq"之前的预期说明符限定符列表

c - 从另一个#define 访问#define 中声明的变量

c - 从链表中删除和返回值

C - 如何更改函数外部的指针?

c++ - 为什么使用 OpenGL 绘制黑色像素而不是透明像素来绘制 8 位纹理?

c - 使用函数读取文本文件并记录数组中的值