在我的嵌入式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