zhk 发表于 2005-4-10 13:10

学C/C++进来看看

刚开始学,还没学好.不理解

james52 发表于 2005-4-10 15:18

去年,我学了!!
可是到现在都还学懂!!

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

hansen 发表于 2005-4-10 15:22

难道真的没人知道? T_T
斑竹在哪里啊

dasonch 发表于 2005-4-10 18:54

学得不是很好,猜一下:30,4

hjack 发表于 2005-4-10 19:06

说真的,对于这些东西平时不是很注意,真的很难做出来哦。
我说说我的思路吧

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

hjack 发表于 2005-4-10 19:10

和机器的编译器也有关的。。。

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

hansen 发表于 2005-4-10 19:12

版主第一个说错了,第二个说的是对的
看来对虚拟函数还有一定的研究哦。

hansen 发表于 2005-4-10 19:15

在32位系统下所有编译器的结果都是一样的。int型是4,char是1,指针也是4

hjack 发表于 2005-4-10 19:24

第一个正确的是什么?请指教

hansen 发表于 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。

hjack 发表于 2005-4-10 19:47

查了一下资料,这篇文章不错
http://blog.csdn.net/freefalcon/archive/2004/07/28/54839.aspx
但没有找到c++的sizeof的文章。。。楼主有没有??

hansen 发表于 2005-4-10 20:06

楼上的那篇文章对sizeof的总结已经很全了,在C++是只是由于有了虚拟函数或虚拟继承的关系,编译器暗地里为类加上了vptr指针或bptr两个指针。

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

powerwind 发表于 2005-4-10 22:00

我运行的结果是

32,8

samuel 发表于 2005-4-13 17:58

找工作时就倒了这些东西,看来还是要注意细节

hansen 发表于 2005-4-13 20:26

楼上说得没错,这些就是找工的时候被问到过的。

蜗牛 发表于 2005-5-7 13:20

学c语言不是这样用的,拜托

HAOXIANG 发表于 2005-5-11 23:40

打算学~~~~~~~~~~

wool王 发表于 2005-5-12 00:58

路过,,,顶贴。。。搞旺本版人气。。。

hjack 发表于 2005-5-12 12:16

如花,发动多些人来顶嘛

wool王 发表于 2005-5-12 19:16

楼上,别学周周叫我如花喇。
页: [1] 2
查看完整版本: 学C/C++进来看看