网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
10月25日
漏签
0
天
c++吧
关注:
578,478
贴子:
2,100,809
看贴
图片
吧主推荐
游戏
14
回复贴,共
1
页
<<返回c++吧
>0< 加载中...
怎么书写一个返回值为struct结构体的函数,结构体不需要malloc吗
只看楼主
收藏
回复
无情土木狗
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我之前只学过C,习惯通过malloc来创建结构体
最近在看C++课,发现他们在书写一个返回值为'类'的函数时,函数内部并不是通过new或者malloc来创建类。
考虑到他说结构体和类相同,我就试着写返回值为struct结构体的函数,函数内部不通过malloc来创建结构体,发现可以正确返回。
我想问的是创建类或者结构体变量,和创建数组的原理不一样吗?难道创建结构体或类是直接在堆区申请空间?
Lily_Shayi
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不能返回局部变量的地址,会警告,即使能正确输出,堆栈满了话就会被覆盖吧
科大讯飞股份有限公司
输入文字在线获得想要的答案,人物,头像,风景,海报,街头,儿童,科技,应有尽有点击【立即体验】
2024-10-25 22:34
广告
立即查看
Lily_Shayi
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
教错了
国服第一阿飞
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
因为类有复制构造函数和移动构造函数
粘黏块
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
c++非指针的结构体会自动复制或移动
钱欢银
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
c语言也能直接返回结构体
所以为什么要malloc呢
起个名字
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你猜new是如何实现的?
起个名字
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
new肯定在堆中申请空间啊,没人教你吗???????
起个名字
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
new不在堆里申请空间,new的意义是啥????
小龙虾i
^
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
首先,局部变量是存在栈中的,在函数结束后会自动释放掉。
然后,malloc是在堆中请求内存空间,需要你自己手动free掉。
最后,new不但是在堆中请求内存空间还会调动构造函数,也是需要手动delete掉的。
回到你的问题1、“怎么书写一个返回值为struct结构体的函数”:在函数声明中指定返回类型为你需要的结构体类型。
2、“结构体不需要malloc吗”,当你需要自行管理对象的生存期时,你才会需要用malloc,当然C++我还是推荐用new
疯狂大喜鹊
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你还不懂malloc怎么回事函数栈帧怎么回事
Yolone
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
加static也行
贴吧用户_QPQKZMa
,
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
返回的是值 不是指针 会有赋值操作
struct class 和内建int char这些都是数据类型
返回类型是值返回 对于class struct 会调用operaor = 或者拷贝构造赋值
返回指针才需要new
无情土木狗
||
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
嗯嗯,就是说可以这样写返回值为class或struct的函数是吗?main函数里返回的class,struct所占的内存空间,后续不会被覆盖是吗?
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示