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

8

数组衰减为指针;当您将一个传递给函数时,您不会传递整个数组的副本,而是传递指向该数组的指针。

于 2013-07-25T06:03:56.970 回答