【发布时间】:2016-02-22 14:55:23
【问题描述】:
我正在开发一个嵌入式 C 项目。我无法理解代码中数组和结构的使用。
例如:
结构:
struct example_struct{
char a;
char b;
char array[4];
}
注意:Int 和 char 的默认大小为 1 字节。
我使用的编译器使用'@'符号为变量和其他参数提供内存分配功能
例如:
内存分配
int example @ 0x125
// Compiler allocate the RAM memory location 0x125 to my variable "example"
问题:
编写这个项目的人使用了下面给出的结构和数组
example.h
struct example_struct{
char a;
char b;
char array[4];
}
Memory.h
volatile struct example_struct node @ 0x130 ;
//allocate memory location 0x130 - 0x135 to node
volatile char buffer[6] @ 0x130;
//allocate memory location 0x130 - 0x135 to buffer
问题
1.不使用指针来访问结构的成员,使用放置在同一内存位置的数组是否合适?
- 是否会导致内存问题?
能否请您帮助我了解在这种特殊情况下使用 stuct 和 array 。
谢谢
库纳尔
【问题讨论】:
-
这与
friend/union非常相似——至少在我看来是这样。顺便说一句 - 非常方便的助记符,可以选择在哪里初始化值。 -
"会不会导致内存问题?" -- 真正的问题是什么?
-
可用内存为 367 字节,与此模式类似,我的代码中使用了三种不同的结构。 (每个 32 字节)
-
如果我声明任何全局变量并使用调试器观察它,我可以看到值的变化。即使我没有在任何地方使用它们。
-
我不明白那个评论——另外,你能否详细说明一下地址 0x130 是否有特殊意义——它是硬件地址还是某种 IO 控制器?