结构体是怎么初始化的呀?

小小蔷薇 2011-07-03 09:34:30
typedef struct linkVel
{
void linKVel();
UINT4 uUpLinksum;
UINT4 uDnLinksum;
UINT4 uupLinkvel;
UINT4 udnLinkvel;
char szSmalltime[40];
}linkVel;
linkVel m_Linkvel[20];



定义的结构体和结构体数组如上所示。
void linKVel()函数实现如下:
{
memset(szSmalltime,0,40);
uUpLinksum =0;
uDnLinksum =0;
uupLinkvel =0;
udnLinkvel =0;}

为什么程序运行后,发现 m_Linkvel中的东西,除了szSmalltime被初始化了,其他都是随机值呀???
哪里有问题吗?
...全文
64 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevinXu101 2011-07-03
  • 打赏
  • 举报
回复
晕啦。。。。
小小蔷薇 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lanmayi003 的回复:]
C++中 结构体可以使用构造函数的 完成对结构体的初始化

但 但 楼主 你的构造函数怎么是 void linKVel();??
构造函数没有返回值的 既然有返回值 那系统还会认为它是构造函数吗
[/Quote]
本来没有返回值的,编译的时候提示有问题嘛。。。
唉~笔误
小小蔷薇 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bdmh 的回复:]
linKVel中式大写的K,不是笔误吧 ,这是构造函数吗,你具体怎么用的linKVel方法
[/Quote]

是构造函数,就是写错了,改成小写后好了,谢谢啊
懒蚂蚁 2011-07-03
  • 打赏
  • 举报
回复
C++中 结构体可以使用构造函数的 完成对结构体的初始化

但 但 楼主 你的构造函数怎么是 void linKVel();??
构造函数没有返回值的 既然有返回值 那系统还会认为它是构造函数吗
老邓 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhll879 的回复:]

引用 1 楼 loaden 的回复:
linkVel m_Linkvel[20] = { 0 };
试试这样。

它是一个类的成员,在声明的时候不可以赋值吧。
只有UINT4型的变量没有被初始化。
[/Quote]
结构体是可以用={0}来初始化的。
这是C++的语法所支持的。
小小蔷薇 2011-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 loaden 的回复:]
linkVel m_Linkvel[20] = { 0 };
试试这样。
[/Quote]
它是一个类的成员,在声明的时候不可以赋值吧。
只有UINT4型的变量没有被初始化。
bdmh 2011-07-03
  • 打赏
  • 举报
回复
linKVel中式大写的K,不是笔误吧 ,这是构造函数吗,你具体怎么用的linKVel方法
qq120848369 2011-07-03
  • 打赏
  • 举报
回复
传引用,传指针,不要传拷贝.
老邓 2011-07-03
  • 打赏
  • 举报
回复
不需要linKVel函数了。
如果一定要用linKVel的话,你得在构造函数中调用它。
老邓 2011-07-03
  • 打赏
  • 举报
回复
linkVel m_Linkvel[20] = { 0 };
试试这样。

64,654

社区成员

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

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