将指针复制到结构中的结构

问题描述

我正在使用libusb库,该库运行良好,但是现在我试图在自己的结构中使用其结构。我认为问题只是我复制结构的方式,因此可能无需了解libusb的工作原理。 我的结构包含libusb结构:

struct device {
  libusb_device *device_handled;
  libusb_device_handle *handle;
  int port[7];
};
typedef struct device device;

和我的功能

int myfunction(device *device_element)
{
    libusb_device *tempdevice;
    libusb_device_handle *temphandle;
    device_element = malloc(sizeof(device));

    //my code here where I use tempdevice and temphandle

    (&device_element)->device_handled = tempdevice;
    (&device_element)->handle = temphandle;
}

发出的错误来自最后两行,我真的不明白为什么。

‘device_element’ is a pointer; did you mean to use ‘->’?
     (&device_element)->handle = temphandle;
                      ^~
                      ->

解决方法

您不需要在&之前添加device_element,因为malloc返回指向已分配结构的指针。因此,只需使用:

(device_element)->device_handled = tempdevice;  
(device_element)->handle = temphandle;
,

您在那里不需要&运算符。

只需使用

device_element->device_handled = tempdevice;
device_element->handle = temphandle;