自从复合字面量问世以来,它可以用于初始化指针等操作:
int *p = (int []) {1, 2, 3, 4};
虽然这通常用于struct
,但也可以用于初始化匿名数组(见示例)。但如果我理解正确,像这样初始化标量指针:
int *p = &(int) {4};
这个也是有效的。我觉得令人困惑的是在gcc
网站上的声明:“对于标量类型和联合类型,复合字面值也被允许,但是那时复合字面值相当于一个强制转换。”他们是否只是意味着在匿名标量前使用取地址符&
是一种强制转换形式?