2016-12-31 39 views
0

所以我有類似的(簡化的例子)功能:變更值的指針

void somefunction(structuraltype *something) { 

    something->variable = 6; 

} 

正如你所看到的,我可以用輕鬆訪問值 - >

但我意識到,我必須使用指針而不是單個指針。
您能否向我解釋在這種情況下我應該如何獲得價值?

void somefunction(structuraltype **something) { 

    something???variable = 6; 

} 
+2

爲什麼你需要使用指針指針? –

+1

嘗試:(* something) - > variable = 6; – eyllanesc

+0

沒有理由說明你所顯示的功能需要將指針指向指針。它也不需要簡單的指針參數。將參數作爲參考。 –

回答

2

這樣做的等效:

void somefunction(structuraltype* something) { 
    something->variable = 6; 
} 

是這

void somefunction(structuraltype* something) { 
    (*something).variable = 6; 
} 

你可以申請,對於間接的各個層面:

void somefunction(structuraltype** something) { 
    (*(*something)).variable = 6; 
} 

間接的外部級可以隨時通過->被替換爲:

void somefunction(structuraltype** something) { 
    (*something)->variable = 6; 
} 

但它可能更通常使用的一個參考指針比指針指向一個指針:

void somefunction(structuraltype*& something) { 
    something->variable = 6; 
} 
+0

這也會派上用場,我會在這裏回來檢查每次我需要它 –

4

只需解引用所述第一指針來訪問所述第二指針,然後可以使用訪問該對象的成員:

void somefunction(structuraltype **something) {  
    (*something)->variable = 6;  
} 
+0

這回答技術,但它不是一個新手的好方向。你會建議一位新手司機爲了節省汽油而加油嗎?從技術上講,這當然是這樣的:這在技術上是一個很好的答案。 –

+0

@TheSorter:在我看來,雷米只是收穫了代表點。否則,他會關心他在教你什麼。 –

+1

@ Cheersandhth.-Alf你爲什麼要這樣說?你見過他的作品嗎?我認爲你錯了。 – 2016-12-31 01:40:52