【发布时间】:2019-08-09 16:28:20
【问题描述】:
我试图将一个结构指向一个特定的内存位置,谁能告诉我如何在 c 编程中完成它。 我已经定义了一个宏来保存内存位置的起始地址。
#define START_ADDR 0xF6000 //starting address
typedef struct {
uint32_t checksum;
uint16_t index[len];
} block;
我使用以下语句更改了块的内存分配:
block *value = (block*) START__ADDR;
我也验证了内存分配的变化,没有问题。我正在使用闪存,我已经验证了可以在我提到的特定内存位置上完成写入操作。 现在我正在尝试使用
更新校验和的值value->checksum=0xa5a5a5a5;
但是校验和的值是 0x00000000 并且没有更新为 0xa5a5a5a5。 谁能告诉我如何更改校验和的值。
提前致谢。
问候 维巴夫
【问题讨论】:
-
我不确定您要做什么。为什么你需要这个结构来指向这个地址?你拥有这个地址吗?除非您正在为非常特殊的情况(内核、嵌入式)编写代码,否则您可能无权访问任意地址。
-
这是特定于实现的。你用的是什么 C 编译器?
-
您的意思是您希望结构变量以该地址开头吗?如果是,您可以创建一个指向结构的指针变量并将地址分配给该变量。即块 *block_addr = (block *) START_ADDR;
-
block 这里是一个类型。您需要有一个这种类型的实例来指向所需的地址
-
@MayurK,这就是我要找的。谢谢
标签: c struct structure typedef