C 中数字的指针

问题描述 投票:0回答:1

假设有一个函数获取

int *
参数。

void foo(int *x)
{

}

如果我想在不创建 int 变量的情况下调用此函数

foo(&1)
编译失败并收到此错误消息:

lvalue required as unary ‘&’ operand

为什么1没有地址?那不是存储在堆栈中吗?

c pointers gcc
1个回答
-1
投票

您可以使用复合文字:

void foo(int *x)
{
    printf("%d\n", *x);
}

int main(void)
{
    foo( (int[]){1} );
    foo( &(int){1} );
}

https://godbolt.org/z/xvdbTzn3Y

© www.soinside.com 2019 - 2024. All rights reserved.