在我的嵌入式C程序我有一個結構:的C指針問題
struct var{
unsigned long value;
unsigned long length;
+ More
}
這些結構的數組是用來裝變量。大部分存儲的變量都存儲在'value'中,因此長度設置爲1.
但是,其中一些變量是數組,我試圖將起始地址存儲在'value'中。
unsigned long lookup[10];
variables[x].length = 10;
那我不太清楚如何來保存地址...
variables[x].value = lookup;
// lookup is a pointer so I cant put it into value
OR
variables[x].value = (unsigned long)lookup;
// value reads back through sprintf+uart as '536874692'
// which couldnt be a valid memory address!
我可能乾脆放棄,並在結構中添加一個指針變量
編輯:
我想避免將指針添加到結構中,因爲我必須返回並重寫flash讀/寫函數以保存指針。這些都很複雜,目前正在工作,所以我寧願不要碰它們!
爲什麼536874692無法成爲有效的地址? – jalf 2009-07-29 13:59:25
剛剛意識到這一點。 536874692是20000EC4,它可能是有效的... – Tim 2009-07-29 14:02:35
請注意,如果您的「閃存讀取/寫入功能」不知道查找是一個指針,他們將不知道保存它指向的數據。 – caf 2009-07-29 14:21:17