从C中的结构指针访问指针
我试图访问指针结构中指针的地址 下面是我正在尝试的代码。请帮忙从C中的结构指针访问指针,c,embedded,C,Embedded,我试图访问指针结构中指针的地址 下面是我正在尝试的代码。请帮忙 struct NODE { int Data; int *PtrInt; } NODE_1, *PtrNode; int main(void) { NODE_1.Data = 100; NODE_1.PtrInt = 0x50; *(NODE_1.PtrInt) = 0x110; // i am able to access pointer from structure here
struct NODE
{
int Data;
int *PtrInt;
} NODE_1, *PtrNode;
int main(void)
{
NODE_1.Data = 100;
NODE_1.PtrInt = 0x50;
*(NODE_1.PtrInt) = 0x110; // i am able to access pointer from structure here
PtrNode = 0x1000;
PtrNode->Data = 0x500;
PtrNode->PtrInt = 0xff;
*(PtrNode->PtrInt) = 0xcc; // but i am not able to access to pointer from structure
// pointer
}
通过评论中的对话确认:问题是您正在设置指向地址
0xff
的指针,然后尝试在那里写入/读取整数。您的硬件不允许在未对齐的内存地址(如0xff)访问整数值;使用具有有效对齐方式(根据硬件)的地址,您会很好。您使用的是真正的指针/地址(例如,0x50
、0x1000
和0xff
)吗?这是嵌入式系统吗?您如何知道0x1000
处的内存已被保留以容纳您的结构?是的,这是在嵌入式系统中。我能够在内存中看到它在0x1000地址处存储0x500和0xffPtrNode->PtrInt=0xff
0xff可能是指向int的无效地址,具体取决于您的硬件。尝试改用0xfc或0x100。是的,我确认结构值存储在地址0x1000,是的,0xff写入PtrNode->PtrIntI'm with@mah。尝试交换0x50和0xff。如果错误也交换,那么问题是由于字寻址限制或内存权限,不允许您将字节写入0xFF