我正在處理一組物件,其中一些物件應該具有相同的字面引數,因此當它發生變化時,它也會在所有物件中發生變化。
我嘗試使用指標,以便每個引數都指向同一記憶體,但我真的不知道該怎么做。在我的代碼中發生了一些事情,因為它編譯了,但是當我更改應該一次全部更改的變數時,它單獨更改,我可以手動更改它,但我認為這不是最佳方式。
ex:這一行是創建物件,我給它兩個節點和一個段的記憶體方向,
elementos[i].Set_elemento(&nodos[numero_nodoi-1],&nodos[numero_nodoj-1],&secciones[numero_seccion-1]);
在這里,我應該做這件事,但它什么也沒做。
void Set_elemento(Nodo *nodo_i, Nodo *nodo_j, Seccion *seccion_){
Nodo*p1=NULL;
p1=&nodoi;
p1=nodo_i;
Nodo*p2=NULL;
p2=&nodoj;
p2=nodo_j;
Seccion*j=NULL;
j=&seccion;
j=seccion_;
}
感謝您的幫助,很抱歉我不會說英語。
uj5u.com熱心網友回復:
要取消參考指標,請*在指標之前使用。
void Set_elemento(Nodo* nodo_i, Nodo* nodo_j, Seccion* seccion_) {
nodoi = *nodo_i;
nodoj = *nodo_j;
seccion = *seccion_;
}
它獲取指標地址處的物件并將您的成員變數設定為它們。
雖然我認為你實作你想做的事情的整個方法是錯誤的。
讓每個節點存盤整個節點并復制它非常非常......非常愚蠢。相反,您應該存盤地址并分配指標。因此,將您的nodoi, nodoj,seccion成員變數更改為指標,并且您不需要取消參考任何內容。
然后你可以只復制地址(只有 8 個位元組)而不是取消參考/復制整個物件并且必須以某種方式跟蹤所有節點的所有內容:
Nodo* nodoi, nodoj;
Seccion* seccion;
void Set_elemento(Nodo* nodo_i, Nodo* nodo_j, Seccion* seccion_) {
nodoi = nodo_i;
nodoj = nodo_j;
seccion = seccion_;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/537260.html
標籤:C 目的指针记忆
下一篇:結構指標陣列的歸并排序
