工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2691|回复: 22

学C/C++进来看看

[复制链接]
发表于 2005-4-10 13:05 | 显示全部楼层 |阅读模式
struct A
{
        int a;
        int b;
        char c[22];
};

class B
{
        int d;
        virtual void fn();
};

void main()
{
        printf("%d,%d",sizeof(A),sizeof(B));
}

不要运行程序,看看你能不能正确说出上面程序的输出结果。
想看看在这里的人C/C++学得怎么样。

[ Last edited by hansen on 2005-4-10 at 15:15 ]
发表于 2005-4-10 13:10 | 显示全部楼层
刚开始学,还没学好.不理解
回复

使用道具 举报

发表于 2005-4-10 15:18 | 显示全部楼层
去年,我学了!!
可是到现在都还学懂!!

比如上面的就~~~~~
哎!!!!!
回复

使用道具 举报

 楼主| 发表于 2005-4-10 15:22 | 显示全部楼层
难道真的没人知道? T_T
斑竹在哪里啊
回复

使用道具 举报

发表于 2005-4-10 18:54 | 显示全部楼层
学得不是很好,猜一下:30,4
回复

使用道具 举报

发表于 2005-4-10 19:06 | 显示全部楼层
说真的,对于这些东西平时不是很注意,真的很难做出来哦。
我说说我的思路吧

A是结构体,sizeof(A)的结果为sizeof(int)+sizeof(int)+sizeof(char)*22。
B是一个类,sizeof(B)的结果为sizeof(int)+一个指针的字节。
具体int 、char 、指针的字节是多少我忘了。。。
回复

使用道具 举报

发表于 2005-4-10 19:10 | 显示全部楼层
和机器的编译器也有关的。。。

这段时间接触java,对c的指针变得陌生了。。
回复

使用道具 举报

 楼主| 发表于 2005-4-10 19:12 | 显示全部楼层
版主第一个说错了,第二个说的是对的
看来对虚拟函数还有一定的研究哦。
回复

使用道具 举报

 楼主| 发表于 2005-4-10 19:15 | 显示全部楼层
在32位系统下所有编译器的结果都是一样的。int型是4,char是1,指针也是4
回复

使用道具 举报

发表于 2005-4-10 19:24 | 显示全部楼层
第一个正确的是什么?请指教
回复

使用道具 举报

 楼主| 发表于 2005-4-10 19:34 | 显示全部楼层
第一个是sizeof(int)+sizeof(int)+sizeof(char)*22+Alignement。

为了能够更有效率地在内存中被存取,在32位机器中结构体大小会被调整到4bytes的整数倍,上面sizeof(int)+sizeof(int)+sizeof(char)*22=30,要再加上2个字节达到32字节以更好的存取。
但是如果在结构体中仅仅存在char型变量,则不用加上Alignement。
回复

使用道具 举报

发表于 2005-4-10 19:47 | 显示全部楼层
查了一下资料,这篇文章不错
http://blog.csdn.net/freefalcon/archive/2004/07/28/54839.aspx
但没有找到c++的sizeof的文章。。。楼主有没有??
回复

使用道具 举报

 楼主| 发表于 2005-4-10 20:06 | 显示全部楼层
楼上的那篇文章对sizeof的总结已经很全了,在C++是只是由于有了虚拟函数或虚拟继承的关系,编译器暗地里为类加上了vptr指针或bptr两个指针。

但这两个指针一定是类中出现虚拟函数或虚拟继承时才会加入。
回复

使用道具 举报

发表于 2005-4-10 22:00 | 显示全部楼层
我运行的结果是

32,8
回复

使用道具 举报

发表于 2005-4-13 17:58 | 显示全部楼层
找工作时就倒了这些东西,看来还是要注意细节
回复

使用道具 举报

 楼主| 发表于 2005-4-13 20:26 | 显示全部楼层
楼上说得没错,这些就是找工的时候被问到过的。
回复

使用道具 举报

发表于 2005-5-7 13:20 | 显示全部楼层
学c语言不是这样用的,拜托
回复

使用道具 举报

发表于 2005-5-11 23:40 | 显示全部楼层
打算学~~~~~~~~~~
回复

使用道具 举报

发表于 2005-5-12 00:58 | 显示全部楼层
路过,,,顶贴。。。搞旺本版人气。。。
回复

使用道具 举报

发表于 2005-5-12 12:16 | 显示全部楼层
如花,发动多些人来顶嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-30 03:53

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表