這可能是一個簡單的問題,但我從來沒有碰到類似的東西。讓我首先說我在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)
現在我知道我需要改變陣列到*陣列讓我真正修改結構,我傳遞,而不僅僅是一個副本,但怎麼辦然後我處理作爲結構一部分的指針。也就是說,如果我的stucts的一個被稱爲PHA然後存儲在結構數組的當前元素8號我會寫:
*phA.current++ = 8;
然後將檢查「當前」指針對着「開始」和「結束」的指針,如果需要重新設置......但是,如果我這樣做,通過調用processArray功能如下...
processArray(8,(avgAry *)(&phA));
我如何引用指針的結構,因爲我的理解是,訪問,可以說,功能我會寫phA的和元素:
*array.sum = data;
但是,如果我想訪問指針電流,我會寫這樣的事情嗎?
*(*array.current)++ = data;
對不起,它只是一個漫長的時間,因爲我已經在使用指針和結構...已浪費太多時間做ASM我想深度得到這個。
這個......非常多這個!我在閱讀OP的問題,並在完成之前變得生氣,謝謝Jared讓我的腦海中恢復了理智和冷靜。 – speeder
好的。我想我明白這一點,但在我的情況下,我的傳入成員只是簡單地稱爲數組。它實際上不是一個數組,而是一個包含多個變量,指針和一個整數數組作爲結構成員的結構。那麼我是否仍然按照同樣的方式去做[0]? – balmerjd
@ user3221422必須知道'array'的確切類型才能回答 – JaredPar