我正在使用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一個鏈表通常不會在一個設定的地址。 –