【发布时间】:2014-01-30 18:48:45
【问题描述】:
这可能是一个简单的问题,但我从未遇到过类似的问题。首先让我说我在 GCC 编译器中使用标准 C 语言工作,这是针对嵌入式系统的。
我有一个结构,它包含一个平均数组、运行总和、零偏移量、比例因子、除数因子和指向平均数组的指针。基本上我是这样声明的:
typedef struct tag_avgAry {
int array[AVG_ARRY_LEN];
int *start;
int *current;
int *end;
long sum;
int avg;
int factor;
int zero;
int value;
unsigned char scale;
} avgAry;
所以我的问题是这样的。我需要将使用此 typedef 创建的结构和数据变量传递给处理使用新数据更新运行平均值和数组表的函数。我已经声明了一个函数:
void processArray(int data, avgAry array)
现在我知道我需要将 array 更改为 *array 以便我实际修改我正在传递的结构,而不仅仅是一个副本,而是我该如何然后处理作为结构一部分的指针。即,如果我的一个结构被称为 phA,那么将数字 8 存储在我将编写的结构中的数组的当前元素中:
*phA.current++ = 8;
然后将根据“开始”和“结束”指针检查“当前”指针并在需要时将其重置...但是如果我通过如下调用 processArray 函数来做到这一点...
processArray(8,(avgAry *)(&phA));
我如何引用结构中的指针,因为我的理解是在我要编写的函数中访问 phA 的 sum 元素:
*array.sum = data;
但是如果我想访问当前指针,我会写这样的东西吗?
*(*array.current)++ = data;
对不起,我已经很久没有深入了解指针和结构了...我猜我花了太多时间做 ASM。
【问题讨论】:
标签: c function pointers structure