如何将结构成员作为指针传递给函数?

罗德林

问题是我有一个结构是另一个(主要)结构的成员。我编写了一个函数来清除第一个结构(它需要一个指向结构的指针)。

我想使用该函数清除主结构中的结构,但我不确切知道哪种方法是正确的。

为了更好地解释它,下面是一些代码:

我有一个结构,定义为:

typedef struct
{
    unsigned char next;
    unsigned char first;
    unsigned long data[TCP_RX_BUFFER+1]; 
}struct_circ_buff;

和清除它的功能:

void clearCircularBuffer(volatile struct_circ_buff *circular_buffer)
{
    int i=0;

    for(i=0;i<TCP_RX_BUFFER+1;i++)
        circular_buffer->data[i]=0;

    circular_buffer->first=0;
    circular_buffer->next=0;
}

然后,我有另一个结构,其中包括struct_circ_buff

typedef struct 
{
    volatile unsigned char sensorType;
    volatile uint16_t  sensorFlag;
    volatile struct_circ_buff st_circular_buffer;
}struct_sens;

我想使用clearCircularBuffer上面编写的函数编写一个可以清除此结构的函数。我该怎么办?

void clear_sensors_struc (volatile struct_sens *sensors_struct)
{

sensors_struct->sensorFlag=0;
sensors_struct->tipoSensor=0;

    //NOW, HOW CAN I USE clearCircularBuffer to clean sensors_struct->                      
    //st_circular_buffer??

    //this way compiles fine, but i don´t think it´s correct
    clearCircularBuffer(&(sensors_struct->st_circular_buffer));

    //this way wouldn´t even compile
    clearCircularBuffer(sensors_struct->st_circular_buffer));
} 

最后,我有一个变量声明为:

struct_sens struct_sensores[MAX_NUMBER_OF_SENSORS];

我想写一个函数来清理结构数组...

那么我该如何使用clear_sensors_struc函数来做到这一点呢?

void clear_sensors_struc_array(struct_sens *sensors_struct)
{
    struct_sens aux_str[MAX_NUMBER_OF_SENSORS];  
    int i=0;    

    for(i=0;i<MAX_NUMBER_OF_SENSORS;i++)
    {         
        clear_sensors_struc(&aux_str[i]);
        *(sensors_struct+i)=aux_str[i];
    }
}

有没有定义内部struct_sens aux_str的方法?

尼古拉斯·奥兹米卡(Nicolas Ozimica)

在函数内部clear_sensors_struc,这样做确实是正确的:

//this way compiles fine, but i don´t think it´s correct
clearCircularBuffer(&(sensors_struct->st_circular_buffer));

没错,因为(内部函数clear_sensors_struc):

  • sensors_struct:是指向结构的指针。
  • sensors_struct->st_circular_buffer:取消引用sensors_struct(使用->),并允许您访问其成员st_circular_buffer
  • &(sensors_struct->st_circular_buffer):是指向恰好是structst_circular_buffer的struct成员指针sensors_structstruct_circ_buff

由于该函数clearCircularBuffer需要一个指针,因此它将正确编译并正常工作。

关于清理结构体数组的功能,那呢?

void clear_sensors_struc_array(struct_sens *sensors_struct)
{
    int i=0;    

    for(i=0;i<MAX_NUMBER_OF_SENSORS;i++)
    {         
        clear_sensors_struc((sensors_struct+i));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将(非静态成员函数的)C ++函数指针传递给预定义的C函数?

来自分类Dev

如何将成员函数指针传递给std :: function

来自分类Dev

如何将结构传递给函数

来自分类Dev

C ++:如何将指针传递给另一个类的成员函数?

来自分类Dev

如何将向量作为函数参数传递给指针

来自分类Dev

如何将成员函数指针传递给采用常规函数指针的函数?

来自分类Dev

是否可以将变量作为结构成员传递?

来自分类Dev

如何将结构作为参数传递给函数?

来自分类Dev

如何将结构作为参数传递给Java函数或如何从jni返回到Java

来自分类Dev

如何将指针传递给在另一个结构内部声明的结构作为函数参数?

来自分类Dev

如何将结构成员指针传递给函数?

来自分类Dev

如何将数组和结构传递给需要3个u32指针作为参数的c函数(ctypes)

来自分类Dev

将结构成员作为参数传递给C中的函数

来自分类Dev

如何将非静态成员函数作为模板参数传递给另一个成员函数?

来自分类Dev

如何将临时对象作为非常量引用传递给成员函数?

来自分类Dev

如何将结构成员指针传递给函数?

来自分类Dev

如何将指针传递给模板类的成员函数?

来自分类Dev

将指向结构的成员的指针传递给函数

来自分类Dev

将结构数组传递给函数作为指针(C)

来自分类Dev

如何将任意lambda作为参数传递给函数(以获取命名层次结构)?

来自分类Dev

访问传递给函数的结构成员变量

来自分类Dev

如何将结构作为参数传递给Java函数或如何从jni返回到Java

来自分类Dev

如何将结构的动态数组传递给成员函数?

来自分类Dev

将指针传递给成员函数作为void *函数的参数

来自分类Dev

将结构成员名称传递给 C++ 中的函数

来自分类Dev

如何将嵌套的结构数组作为参数传递给函数?

来自分类Dev

如何将指向结构的指针传递给构造函数?

来自分类Dev

如何将 lamda 作为成员函数的函数指针参数传递?

来自分类Dev

如何将子矩阵作为指针传递给另一个函数

Related 相关文章

  1. 1

    如何将(非静态成员函数的)C ++函数指针传递给预定义的C函数?

  2. 2

    如何将成员函数指针传递给std :: function

  3. 3

    如何将结构传递给函数

  4. 4

    C ++:如何将指针传递给另一个类的成员函数?

  5. 5

    如何将向量作为函数参数传递给指针

  6. 6

    如何将成员函数指针传递给采用常规函数指针的函数?

  7. 7

    是否可以将变量作为结构成员传递?

  8. 8

    如何将结构作为参数传递给函数?

  9. 9

    如何将结构作为参数传递给Java函数或如何从jni返回到Java

  10. 10

    如何将指针传递给在另一个结构内部声明的结构作为函数参数?

  11. 11

    如何将结构成员指针传递给函数?

  12. 12

    如何将数组和结构传递给需要3个u32指针作为参数的c函数(ctypes)

  13. 13

    将结构成员作为参数传递给C中的函数

  14. 14

    如何将非静态成员函数作为模板参数传递给另一个成员函数?

  15. 15

    如何将临时对象作为非常量引用传递给成员函数?

  16. 16

    如何将结构成员指针传递给函数?

  17. 17

    如何将指针传递给模板类的成员函数?

  18. 18

    将指向结构的成员的指针传递给函数

  19. 19

    将结构数组传递给函数作为指针(C)

  20. 20

    如何将任意lambda作为参数传递给函数(以获取命名层次结构)?

  21. 21

    访问传递给函数的结构成员变量

  22. 22

    如何将结构作为参数传递给Java函数或如何从jni返回到Java

  23. 23

    如何将结构的动态数组传递给成员函数?

  24. 24

    将指针传递给成员函数作为void *函数的参数

  25. 25

    将结构成员名称传递给 C++ 中的函数

  26. 26

    如何将嵌套的结构数组作为参数传递给函数?

  27. 27

    如何将指向结构的指针传递给构造函数?

  28. 28

    如何将 lamda 作为成员函数的函数指针参数传递?

  29. 29

    如何将子矩阵作为指针传递给另一个函数

热门标签

归档