c ++ sizeof运算符 - 指向double的指针

时间:2012-02-28 11:50:06

标签: c++ size double sizeof

我有sizeof运算符(C ++)的意外结果。在主要课程中,我有这些行

 double * arguments_ = new double();
*arguments_  = 2.1;
*(arguments_+1) = 3.45;
 cout <<  (sizeof arguments_) << ' ' <<  (sizeof arguments_[0]) << ' '<< (sizeof arguments_)/(sizeof arguments_[0]);

给我输出 4 8 0

双倍大小是8个字节,(sizeof arguments_ [0])= 8.但是,为什么(sizeof arguments_)也不以字节表示(2 * 8 = 16)?是sizeof运算符应用

4 个答案:

答案 0 :(得分:6)

两个值都以相同的单位表示。您有一个32位系统,因此地址的大小是32位,或4个字节。系统上的double大小为8个字节。整数除法4/8的结果为零。

答案 1 :(得分:2)

因为当您将 sizeof 运算符应用于指针时,无论它指向何种类型,您都将获得指针占用的空间大小。

在C ++中,指针变量占用4个字节(在具有32位地址总线的体系结构上)。

答案 2 :(得分:2)

(sizeof arguments_)产生指针的大小,即4个字节。

答案 3 :(得分:1)

你得到的是:

sizeof(指针)= 4个字节

sizeof(double)= 8个字节

4/8 = 0(记住/等于整数除法)