提问:sizeof(array)为什么是40!

来源:百度知道 编辑:UC知道 时间:2024/05/22 00:42:55
#include"iostream.h"
void main()
{
int size,a;
double array[]={5.5,6.7,3.6,6.8,1.2};
double*P_array;
P_array=array;
size=sizeof(array)/sizeof(*array);
for(int i=0;i<size;i++)
{
cout<<*P_array<<endl;
P_array++;
}
}
提问:sizeof(array)为什么是40!
而sizeof(*array)为什么是8?

sizeof(array)得到的是数组所占内存大小,也就是数组中所有元素的大小之和。

sizeof(*array)得到的是数组中第一个元素所占内存的大小。

因为是double型的数组,每个元素double在现在的多数PC机上为64位二进制位,也就是8字节。数组共5个元素,所以大小是40字节。

首先array[ ]数组中的数据类型是double,一共存有5个数据。每个double类型的数据为8位。sizeof(array)算的是整个数组的长度,应该用表达式5*sizeof(double),即为5*8=40。接着数组名array代表着数组的首地址,那么*array即代表了数组的第一个值,即*array[0],那么sizeof(*array)就表示取一个double类数据的长度了,也就是8。想得到数据中有多少个数据可以这样做:sizeof(array)/sizeof(double).