gpt4 book ai didi

c - 理解指针结构

转载 作者:行者123 更新时间:2023-12-04 01:29:55 26 4
gpt4 key购买 nike

我想了解如何将指向结构的指针传递给函数参数并实现。 avrg_stpc[idx_u16].sum_f32 数组如何工作?

typedef struct
{
const float * input_f32p;
float avg_f32;
float sum_f32;
float factor_f32;
unsigned int rs_u16;
} avgminmax_avg_t;


void avgminmax_AvgCalculate_vd(
avgminmax_avg_t * const avrg_stpc,
const unsigned int numOfEntrys_u16c)
{
unsigned int idx_u16 = 0u;
do
{
avrg_stpc[idx_u16].sum_f32 += (*avrg_stpc[idx_u16].input_f32p
- avrg_stpc[idx_u16].avg_f32);
avrg_stpc[idx_u16].avg_f32 = (avrg_stpc[idx_u16].sum_f32 *
avrg_stpc[idx_u16].factor_f32);
idx_u16++;
}while(idx_u16 < numOfEntrys_u16c);
}

最佳答案

一些可以帮助您理解数组和指针及其关系的要点:

  • 指针实际上只指向一个“对象”,但该对象可能是数组中的第一个。

  • 数组自然会退化为指向其第一个元素的指针。

  • 而数组索引等同于指针运算(对于任何指针或数组a 和索引i,表达式a[i] 完全等于 *(a + i))。


至于你的具体示例代码,如果你想的类似这样,也许会更容易:

avgminmax_avg_t *temp_ptr = &avrg_stpc[idx_u16];
temp_ptr->sum_f32 += ...;
temp_ptr->avg_f32 = ...;

或者可能像:

avgminmax_avg_t temp_object = avrg_stpc[idx_u16];
temp_object.sum_f32 += ...;
temp_object.avg_f32 = ...;
avrg_stpc[idx_u16] = temp_obj;

上面的两个片段都会导致与您现有代码相同的结果,但需要一个额外的临时变量,并且在后一个片段中复制结构两次。

关于c - 理解指针结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61243056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com