请参阅以下代码块。*(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 ;
}
Run Code Online (Sandbox Code Playgroud)
这纯粹是一个关于运算符优先级的问题
*sample,*(sample)并且(*sample)所有人都孤立地做同样的事情。它们是deference“样本”指针
与其他运算符结合使用时,事情会变得更加有趣。你有一个例子
*(sample+1)
Run Code Online (Sandbox Code Playgroud)
让我们去掉括号
*sample+1
Run Code Online (Sandbox Code Playgroud)
这可能意味着两件事
显式括号给出
那么什么是
*sample+1
Run Code Online (Sandbox Code Playgroud)
意思是(即没有括号来决定顺序),毫不奇怪,这意味着
(*sample) + 1
Run Code Online (Sandbox Code Playgroud)
您可以将相同的逻辑应用于所有其他组合