c/c++开发分享如何将struct成员作为函数中的指针传递

首先,我想说在发布这个问题之前我已经在这个论坛上详尽地搜索了答案,但我没有找到任何答案。

好吧,问题是我有一个结构是另一个(主要)结构的成员。 我写了一个函数来清除第一个结构(它需要一个指向struct的指针)。 我想使用该函数来清除主结构中的结构,但我不确切知道哪种方法是正确的。

为了更好地解释它,这里是一些代码:

我有一个结构,定义为:

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

以及清除它的function:

 void clearCircularBuffer(volatile struct_circ_buff *circular_buffer) { int i=0; for(i=0;idata[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,有没有办法做到这一点?

好的,希望有人能帮助我! 提前致谢!

    在函数clear_sensors_struc ,确实是正确的:

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

    这是正确的,因为(内部函数clear_sensors_struc ):

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

    关于清理结构数组的function,这个怎么样?:

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

    在Nicolas中,例如clearCircularBuffer(&(sensors_struct-> st_circular_buffer));

    我们可以直接使用

    clearCircularBuffer(sensors_struct-> st_circular_buffer);

    – >优先于&

    1)首先,您没有正确定义结构。 定义结构如下

      typedef struct one { unsigned char next; unsigned char first; unsigned long data[11]; }struct_circ_buff; typedef struct two { volatile unsigned char sensorType; volatile int sensorFlag; volatile struct_circ_buff st_circular_buffer; }struct_sens; 

    2)你问

    I would like to write a function that would clean this struct, using the 'clearCircularBuffer' function written above. How could I do that? 你可以这样做

     void clear_sensors_struc (volatile struct_sens *sensors_struct) { int i; sensors_struct->sensorFlag=0; sensors_struct->sensorType=0; sensors_struct->st_circular_buffer.next=0; sensors_struct->st_circular_buffer.first=0; for(i=0;ist_circular_buffer.data[i]=0; } } 

      以上就是c/c++开发分享如何将struct成员作为函数中的指针传递相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545324.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注