上机实践

本例子来自于《剑指Offer》(P37)

解答如下:

size1:20

  data1是一个数组,sizeof(data1)是求数组大小。

  这个数组包含5个整数,每个整数4个字节,共20字节。

size2:4

  data2声明为指针,尽管它指向了数组data1的第一个数字,但它的本质仍然是一个指针。

  在32位系统上,对任意指针求sizeof,得到的结果都是4。

size3 : 4

  在C/C++中,当数组作为函数的参数进行传递时,数组会自动退化为同类型的指针。

  因此尽管函数GetSize的参数data被声明为数组,但它会退化为指针,size3的结果仍然是4。

附:

1. sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

2. 指针记录了另一个对象的地址,是来存放地址的,它等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值必定是4(注意结果是以字节为单位),但是,在64位系统中指针变量的sizeof结果为8。

原文地址:https://www.cnblogs.com/sunfloweing/p/4845492.html