假设有一个函数获取
int *
参数。
void foo(int *x)
{
}
如果我想在不创建 int 变量的情况下调用此函数
foo(&1)
编译失败并收到此错误消息:
lvalue required as unary ‘&’ operand
为什么1没有地址?那不是存储在堆栈中吗?
您可以使用复合文字:
void foo(int *x)
{
printf("%d\n", *x);
}
int main(void)
{
foo( (int[]){1} );
foo( &(int){1} );
}