2

私は既存のプロジェクト (他の誰かによって書かれたもの) に取り組んでいますが、これら 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 がどのように変更されるのかということです。

4

1 に答える 1