You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向接收int指针的函数便捷传入常量值?

如何直接向指针参数函数传入字面量5?

假设有如下函数:

void AAA(int i);

我们可以直接传入数值5,调用方式为:

AAA(5);

若函数定义为:

void BBB(int* pi);

尝试写成BBB(&5)无法通过编译,且不想通过定义临时变量int i = 5; BBB(&i);的方式调用,请问如何修改为正确的调用形式?


解决方案

  1. C语言(C99及以上标准)
    使用C99引入的复合字面量语法,直接创建匿名的int对象并取其地址:
BBB(&(int){5});

复合字面量(int){5}会生成一个值为5的匿名int变量,其生命周期与当前代码块内的局部变量一致,完全满足函数调用的需求。

  1. C++环境
    C++没有原生支持复合字面量,但可以通过类型转换结合const_cast实现:
BBB(const_cast<int*>(&static_cast<const int>(5)));

原理是先将字面量5转换为const int类型的临时对象,再通过const_cast移除const属性,最后取地址传入函数。


内容的提问来源于stack exchange,提问作者William Sung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:25:22