[英]What is the difference between *(pointer) and (*pointer)?
请看下面的代码块。 你能告诉我*(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 ;
}
这纯粹是一个关于运算符优先级的问题
*sample
、 *(sample)
和(*sample)
都孤立地做同样的事情。 他们deference
“样本”指针
与其他运算符结合使用时,事情会变得更加有趣。 你有一个例子
*(sample+1)
让我们拿出父母
*sample+1
这可能意味着两件事
显式括弧给出
那么什么是
*sample+1
意思(即没有括号来指示顺序),这并不奇怪
(*sample) + 1
您可以将相同的逻辑应用于所有其他组合
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.