阅读一些内核代码。
我无法理解这条线的含义
*(void **) &(int[2]){0,PAGE_SIZE};
还有,这意味着什么
{0,PAGE_SIZE}
对我来说,它看起来不像是带有逗号的函数。
此代码可能会发生什么?我不明白这里的间接含义。
是函数还是强制转换?括号部分是什么意思?对我来说似乎如此令人费解,但绝对有其含义。
(int[2]) { 0, PAGE_SIZE }
是一个表达式(称为复合文字),其值是一个2的数组int
。该数组的地址被获取,转换为void **
并取消引用。
最终结果是将数组内容重新解释为指向void的指针。
请注意,您可以采用复合文字的地址,因为它们是左值。参见例如。这个问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句