私は既存のプロジェクト (他の誰かによって書かれたもの) に取り組んでいますが、これら 2 つの単純な関数について理解できません。
私が興味を持っている最初の機能にはこれが含まれています:
int iCounts[NUM_GRADES];
PROFILEMAN->GetMachineProfile()->GetGrades( pSong, GAMESTATE->GetCurrentStyle()->m_StepsType, iCounts );
iCounts が GetGrades に渡されていることがわかりますが、これで問題ありません。しかし、後で iCounts は次のように使用されます。
AppendOctal( iCounts[g], 3, foo );
何かが iCounts を変更しました。しかし、GetGrades を見ると、次のようになります。
void Profile::GetGrades( const Song* pSong, StepsType st, int iCounts[NUM_GRADES] ) const{
SongID songID;
songID.FromSong( pSong );
memset( iCounts, 0, sizeof(int)*NUM_GRADES );
...then some more stuff is done to iCounts
}
私が理解できないのは、GetGrades にポインターが含まれていない場合、元の関数の iCounts がどのように変更されるのかということです。