水滴石穿,非一日之功
代码如下
#include <stdio.h>
int getSize(int array[]){
return sizeof(array);
}
int main(int argc, char const *argv[])
{
int arr1[] = {1,2,3,4,5};
int size1 = sizeof(arr1);
int* pointer = arr1;
int size2 = sizeof(pointer);
int size3 = getSize(arr1);
printf("%d, %d, %d \n",size1,size2,size3);
return 0;
}
输出为20,8,8
分析:
- arr1是一个数组,sizeof求的是数组arr1的大小。整型变量的大小为4字节,所以含有五个元素的数组的大小为20字节。
- 整型指针pointer指向数组的第一个数字,64位系统中指针的大小始终为8字节。
-
数组作为函数的参数传递时,数组自动退化成为同类型的指针。所以getSize函数中的sizeof返回的数值为指针的大小,而不是数组的大小。