c语言 - *(void **) &(int[2]){0,PAGE_SIZE};意义?



上下文

正在读取一些内核代码。

问题

我无法理解这句话的意思

*(void **) &(int[2]){0,PAGE_SIZE};

更重要的是,这意味着什么

{0,PAGE_SIZE}

对我来说,它看起来不像是一个有逗号的函数。

这个代码可能是怎么回事?我不懂这里的间接引语。

是函数还是强制转换?支架部分是什么意思?对我来说似乎很复杂,但肯定有意义。

(int[2]) { 0, PAGE_SIZE }

是一个表达式(称为复合文字),其值是两个int s的数组。此数组的地址被获取、强制转换为void **并取消引用。

最终结果是将数组内容重新解释为指向void的指针。

请注意,可以获取复合文字的地址,因为它们是左值。参见这个问题。

最新更新