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

C++中能否在初始化指针的同时直接返回该指针?

关于初始化指针并直接返回的问题解答

嘿,这个问题我之前也碰到过,咱们好好捋一捋~

首先,你提到的queue<string> *p(&item)能正常运行,这是完全没问题的——这是C++里直接初始化指针的语法,把item的内存地址赋值给指针p,编译器能正确识别这种变量声明式的初始化。

但为什么加上return就报错呢?核心原因是:return语句需要的是一个表达式,而不是变量声明。你尝试写的return queue<string> *(&item);本质上是在试图把变量声明塞进return里,编译器自然会懵,抛出“Expected primary-expression before *”的错误。

正确的解决办法

根据你的需求,有两种常见的正确写法:

1. 返回指向已有对象的指针

如果你只是想返回指向item的指针,直接返回item的地址即可,&item本身就是一个queue<string>*类型的合法表达式:

// 假设在某个函数里,item是已存在的queue<string>对象
return &item;

2. 动态分配新对象并返回指针

如果你想创建一个新的queue<string>对象(拷贝item的值),然后返回指向它的指针,可以用new关键字配合直接初始化:

return new queue<string>(item);

⚠️ 注意:用new分配的内存需要手动用delete释放,否则会造成内存泄漏。

再补充一点小知识

C++里的初始化语法分好几种,像string s("Hi")这种是直接初始化,对于指针来说,直接初始化变量是允许的,但不能把这种声明式写法放到return里——因为return期待的是一个能求值的表达式,而不是定义一个新变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:18:56