我正在使用C语言。 我有一个指针,我想创建一个以地址开头的新结构。这是我的方式来做到这一点,我可以通过编译,但是当我运行它时,它会得到总线错误和段错误。如何根据给定的地址初始化一个结构?
struct node{
int value;
int value2
struct node *next;
}
int main(){
struct node a = {0, 0, NULL};
void *p = (void*)(&a + 1);
struct node *ptr = (struct node *)(p);
//These two statements below cause the problem.
(*ptr).value = 100;
(*ptr).next = NULL;
}
有人可以帮我吗?
当然,我必须具有'some_method_to_get_address'的定义,因为那是错误所在。 (顺便说一下,'(* ptr).value)'通常写成'ptr-> value')。 –
我想你正在使用一个寄存器设置在给定地址的嵌入式系统?除了@AnttiHaapala所说的以外,你的(结构节点)也应该是(struct node *),你可能想转换成addr_t中间值以确保你返回的“整数”作为地址是适合的大小一个地址指针。 –
@ c.fogelklou一个链表通常不会在一个设定的地址。 –