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

Lar*_*rry 7 c pointers

上下文

阅读一些内核代码.

问题

我无法理解这条线的含义

*(void **) &(int[2]){0,PAGE_SIZE};
Run Code Online (Sandbox Code Playgroud)

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

{0,PAGE_SIZE}
Run Code Online (Sandbox Code Playgroud)

对我而言,它看起来不像是逗号的函数.

这段代码可能会发生什么?我不明白这里的间接性.

它是函数还是演员?支架部分是什么意思?似乎对我如此复杂,但绝对有意义.

Ale*_* C. 7

(int[2]) { 0, PAGE_SIZE }
Run Code Online (Sandbox Code Playgroud)

是一个表达式(称为复合文字),其值为两个ints 的数组.该数组的地址被采用,转换void **和解除引用.

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

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