C语言指向这个结构体为什么要加&

2024-12-02 08:32:35
推荐回答(3个)
回答(1):

你哪只眼睛 看见data指向nmma7660_client 类型结构体变量了?
struct nmma7660_data *data; 这只是定义了一个 指向结构体变量的指针 但是还没让他具体指向那个变量 他是个野指针

你贴的代码不全 肯定能找到类似
struct nmma7660_data xxx;
struct nmma7660_data *data;
data = &xxx;
data->nmma7660_client = client;// 相当于 xxx.nmma7660_client = client;
另外
mutex_init(&data->value_mutex); //不是 &data指向value_mutex
而是 data指向xxx导致可以用data访问 xxx的成员value_mutex, 然后再得到这个成员的地址

回答(2):

这个 & 是 取的 data->value_mutex 的 地址, 即 data 中的  value_mutex 的地址,

因为 C 语言中  -> 比 & 优先级高.

回答(3):

上面那个直接用data指向nmma7660_client,

另一个也是用data指向value_mutex,前面加&是取的value_mutex的地址