請參閱以下代碼塊。*(sample)你能告訴我和之間的區別(*sample)嗎?
for(i = 0; i < num_samples ; i )
{
*(sample) &= 0xfff ;
if( (*sample) & 0x800 )
*(sample) |= 0xf000 ;
*(sample 1) &= 0xfff ;
if( *(sample 1) & 0x800 )
*(sample 1) |= 0xf000 ;
fprintf( my_data->fout, "%d, %d\n", *sample, *(sample 1) );
sample = 2 ;
}
uj5u.com熱心網友回復:
這純粹是關于運算子優先級的問題
*sample,*(sample)并且(*sample)所有人都孤立地做同樣的事情。他們deference是“樣本”指標
與其他運算子結合使用時,事情會變得更加有趣。你有一個例子
*(sample 1)
讓我們拿出括號
*sample 1
這可能意味著兩件事
- 給我 sample 指向的值,然后加 1
- 給我樣本點之后的值
顯式括號給出
- (*sample) 1 => 做 deref,然后加 1
- *(sample 1) => 加 1 然后 deref
那么做什么
*sample 1
意思(即沒有括號來指示順序),毫不奇怪它意味著
(*sample) 1
您可以將相同的邏輯應用于所有其他組合
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446149.html
下一篇:參考的定義自相矛盾
