私の個人的な見解:
int ret = 0, i, *reg;
int size = sizeof(Regs)/sizof(Reg);
for(i = 0; i<size; i++)
{
reg= (uint*)Regs[i].Number;
*reg=0;
}
return ret;
行int ret = 0, i, *reg;
は次と同等です
int ret;
ret = 0; //return value, if nothing changes it while running the sub, the return is (positive) as every C routine should do
int i; // i is what it is, no initialisation is performed
int* reg; //reg is what it is, no initialisation is performed.
この行は、 というバッファとその基本データ フィールド タイプ の間のアトミック ディメンションとしてint size = sizeof(Regs)/sizof(Reg);
定義されます。構造自体を反復処理するために使用されます (注: C では、Regs がバッファー/配列/ストリームである必要はありません。Sizeof に関して、Regs よりも大きいことが必要なだけです。size
Regs
Reg
ループは、for
Reg 内の Number フィールドの位置から始まる各反復で n バイトをゼロにします (32Number
ビット = 内のバイト 4 からバイト 7 までの 4 バイト長の整数であると仮定しますReg
)。
(uint*) キャストは、より読みやすい (uint*) に関して C では正常です。これは、メモリを扱う場合、単純な (uint) では、アドレス指定可能なヒープ全体にまたがるには十分でない可能性があるためです。(int*) キャストがヒープを反復することはめったにありません。
最後に、何も失敗しなかった後 (この場合、ret が使用されていないため、コードが失敗することはありません) の戻り値は 0 = 正の戻り値です。
for ループで何が行われるかをよりよく説明するために、Regs が 4 つの Reg インスタンスを連続して含む構造体 (ある種の配列) であり、各 Reg が 32 バイト幅であり、2 番目のフィールド (4 から 7 までのバイト) が呼び出されるとします。Number
(たとえば、32 ビット整数フィールド)。for ループの実行前と実行後のメモリのバイトごとの視覚化 (使いやすく読みやすいように DECIMAL 形式) は、次のようになります。
before: 111910460 § 721672678 § 1941200806 § -1183627007 § 1586684153 § 1875498315 § 1260999030 § 1325944862 § 1065932391 § 1844134883 § 1605637187 § -1318663956 § 233262241 § 1220589880 § 1712611369 § -2095694326 § -1982972241 § 1536475566 § 1550414594 § 60661453 § 1920891323 § 1052971320 § 151058183 § -693448823 § -763585993 § -1546059240 § -638901203 § 1592652624 § -26126893 § 359938920 § 730403663 § -2119128428 § 22506289 § 329168535 § 1888110366 § -1324425487 § -2128177580 § -1447190387 § -2102707104 § -834692095 § 233601466 § -2368015 § -1247566469 § -496146592 § 1399945760 § -433672213 § -1874762262 § -240141582 § 1361991330 § -2100310671 § -1716316415 § 1113810979 § 837914061 § -2004720198 § -499664162 § -581537344 § -1876582939 § -855186203 § -477447744 § 609476093 § -1551962613 § 1342130125 § -1245085596 § 70042099 § 853203728 § -1216264601 § -821207587 § -663767272 § 1811963624 § -1359626002 § 587239161 § 412800157 § 1308828835 § -484000995 § 1196157114 § 1554729984 § -588907472 § -862275327 § 2141670903 § -496863553 § -1461319540 § 2011880048 § 724185989 § -523083707 § 535075127 § -1252818631 § -1535682266 § 1731550626 § -1513281783 § 2056573089 § 542455754 § -1663652432 § 209157746 § -917714063 § -62336558 § -335893804 § -455431912 § -1338920623 § 966843505 § 698158966 § -1748732016 § -710422429 § 429351988 § 1404039358 § 1828069719 § -1849911876 § -1756314151 § 1046003361 § -1124626131 § 422202 § 608265685 § 1538084062 § -1342247255 § 1734342148 § -2095965518 § 544674987 § -12582890 § 1365311130 § 1104188373 § 688131395 § -1615783097 § 755406204 § -151161805 § 1955152994 § -427907710 § 700996102 §
after: 111910460 § 721672678 § 1941200806 § -1183627007 § 0 § 0 § 0 § 0 § 1065932391 § 1844134883 § 1605637187 § -1318663956 § 233262241 § 1220589880 § 1712611369 § -2095694326 § -1982972241 § 1536475566 § 1550414594 § 60661453 § 1920891323 § 1052971320 § 151058183 § -693448823 § -763585993 § -1546059240 § -638901203 § 1592652624 § -26126893 § 359938920 § 730403663 § -2119128428 § 22506289 § 329168535 § 1888110366 § -1324425487 § 0 § 0 § 0 § 0 § 233601466 § -2368015 § -1247566469 § -496146592 § 1399945760 § -433672213 § -1874762262 § -240141582 § 1361991330 § -2100310671 § -1716316415 § 1113810979 § 837914061 § -2004720198 § -499664162 § -581537344 § -1876582939 § -855186203 § -477447744 § 609476093 § -1551962613 § 1342130125 § -1245085596 § 70042099 § 853203728 § -1216264601 § -821207587 § -663767272 § 0 § 0 § 0 § 0 § 1308828835 § -484000995 § 1196157114 § 1554729984 § -588907472 § -862275327 § 2141670903 § -496863553 § -1461319540 § 2011880048 § 724185989 § -523083707 § 535075127 § -1252818631 § -1535682266 § 1731550626 § -1513281783 § 2056573089 § 542455754 § -1663652432 § 209157746 § -917714063 § -62336558 § -335893804 § -455431912 § -1338920623 § 966843505 § 698158966 § 0 § 0 § 0 § 0 § 1828069719 § -1849911876 § -1756314151 § 1046003361 § -1124626131 § 422202 § 608265685 § 1538084062 § -1342247255 § 1734342148 § -2095965518 § 544674987 § -12582890 § 1365311130 § 1104188373 § 688131395 § -1615783097 § 755406204 § -151161805 § 1955152994 § -427907710 § 700996102 §