使用new来动态分配结构体数组

Innocence112 2016-11-13 07:16:56

为什么运行结果会乱码?
...全文
800 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2016-11-14
  • 打赏
  • 举报
回复
堆上分配的空间没有这种初始化的用法,你大括号里的内容只是当作了语句运行,而没有初始化堆内存
赵4老师 2016-11-14
  • 打赏
  • 举报
回复
“变量赋值”和“变量初始化”不是一回事! “变量赋值”发生在运行期,其写法遵循赋值语法规定。 “变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
小灸舞 2016-11-14
  • 打赏
  • 举报
回复
你这初始化的方式不对。
改成这样:
CandyBar snack[3] = { { "num1", 2.5, 366 }, { "num2", 2.3, 250 }, { "num3", 2.4, 240 } };
paschen 版主 2016-11-14
  • 打赏
  • 举报
回复
引用 6 楼 github_36698149 的回复:
[quote=引用 5 楼 paschen 的回复:] 堆上分配的空间没有这种初始化的用法,你大括号里的内容只是当作了语句运行,而没有初始化堆内存
请问怎样初始化堆内存?[/quote] 字符串赋值用strcpy
paschen 版主 2016-11-14
  • 打赏
  • 举报
回复
引用 6 楼 github_36698149 的回复:
[quote=引用 5 楼 paschen 的回复:] 堆上分配的空间没有这种初始化的用法,你大括号里的内容只是当作了语句运行,而没有初始化堆内存
请问怎样初始化堆内存?[/quote] 直接为堆上变量赋值 stack[0].weight = .....
tony2278 2016-11-14
  • 打赏
  • 举报
回复
1 没初始化? 2 结构体未内存对齐?
Innocence112 2016-11-14
  • 打赏
  • 举报
回复
引用 5 楼 paschen 的回复:
堆上分配的空间没有这种初始化的用法,你大括号里的内容只是当作了语句运行,而没有初始化堆内存
请问怎样初始化堆内存?
pc0de 2016-11-13
  • 打赏
  • 举报
回复
1、在vs中编译未通过; 2、很明显是内存没有初始化正确 ,试试将"num1"改成"num1\0"应该就不会乱码了 3、删除数组请用delete[] 变量
baidu_36698428 2016-11-13
  • 打赏
  • 举报
回复
我没有问题啊 在vim中
Innocence112 2016-11-13
  • 打赏
  • 举报
回复
改过之后依然是乱码
yshuise 2016-11-13
  • 打赏
  • 举报
回复
delete [] snack;

64,660

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧