2009-12-16 32 views
0

我想通過一個方法內的結構,所以我可以改變它的內部價值,但我不是它的語法不太清楚:我們如何更改已經在方法中傳遞的結構值?

struct qsTracker { 
      int points; 
      BOOL flagged; 
} myCurrentQs; 

[self calculateScore:myCurentQs]; 

-(void) calculateScore:(struct qsTracker) currentQs { 
    currentQs.points++; 
    currentQS.flagged = YES; 
} 

顯然,currentQs沒有看到任何變化。任何幫助將非常感激。

回答

5

你應該在指針傳遞給結構,而不是結構本身:

-(void) calculateScore:(struct qsTracker *) currentQs { 
    currentQs->points++; 
    currentQS->flagged = YES; 
} 

然後:

[self calculateScore:&myCurentQs]; 

因爲currentQs現在是一個指針,裏面所做的更改方法會反映在方法之外。

+0

thx它的工作,我早些時候嘗試過這種方法,但我使用currentQs.points ++;而不是currentQs->分爲什麼是這樣? – Frank 2009-12-16 15:46:11

+1

'.'運算符處理值(結構本身),而' - >'首先對一個指針取消引用,然後在該結構中的字段上工作。基本上,'currentQs-> points'與'(* currentQs).points'是同義的。 – mipadi 2009-12-16 15:50:59

相關問題