免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4243 | 回复: 5
打印 上一主题 下一主题

请教:关于C和C++中struct的区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-07 17:05 |只看该作者 |倒序浏览
C中的struct声明之后是不是所占内存大小就确定了?C++中的呢?
声明一个struct(C++),如下:
struct record{
       string name;
       int age;
       vector<int> grades;
       };
我未做初始化之前,使用sizeof(struct record)查看record大小为20,我向grades填入100个整数,1000个整数,怎么大小还是20?
string,vector<int>不是长度可变的么?我查看《C程序设计语言》,里面说sizeof()是一个运行时操作符,这样说来对于具体的record的初始化,大小应该不一样。
我菜的不像样子,请您不吝赐教。

论坛徽章:
0
2 [报告]
发表于 2008-01-07 17:26 |只看该作者
sizeof 是编译时...
c++不熟,
不过 vector<int> grades; 这句, 在 record 中应该只是一个指针,大小固定
andytodd 该用户已被删除
3 [报告]
发表于 2008-01-07 17:40 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2008-01-07 17:53 |只看该作者
原帖由 andytodd 于 2008-1-7 17:40 发表
sizeof(vector)是一个确定值
类似于 struct 内含有一个数组的指针一样,
无论这个数组有多少个元素,这个指针都是一个机器字长.


恩,十分感谢,并感谢2楼的,我太粗心了,再查一遍,果然是编译时,对自己比较无语...........

论坛徽章:
0
5 [报告]
发表于 2008-01-07 23:33 |只看该作者
在C++中  struct 相当于一个类
成员公有。。。。
C可以用struct模拟C++

论坛徽章:
0
6 [报告]
发表于 2008-01-08 00:20 |只看该作者
不过 vector<int> grades; 这句, 在 record 中应该只是一个指针
sizeof不可能也没必要去跟踪到你的vector里面到底存储了多少个元素
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP