剑指offer的学习笔记
运行以下的代码,求运行结果
#include <stdio.h>
int getsize(int data[])
{
return sizeof(data);
}
int main()
{
int data1[]={1,2,3,4};
int size1=sizeof(data1);
int* data2 = data1;
int size2 = sizeof(data2);
int size3 = getsize(data1);
printf("%d,%d,%d",size1,size2,size3);
return 0;
}
答案:16,4,4
data1是一个数组,sizeof(data1)是求数组的长度,在32位系统中,字节的长度为4,所以数组的长度为16. data2是一个指针,虽然它指向数组data1的第一个数字,但其本质是指针。在32位系统中,对任意指针求sizeof,其结果都为4.
在c/c++中,数组作为函数的参数进行传递时,都会自动退化为同类型的指针,所以size3的值为4