数组大小和数组元素个数的计算
C语言中用sizeof()函数可以计算大小,例子如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[10]={0};
printf("数组的大小是:%d\n",sizeof(arr));
system("pause");
return 0;
}
运行结果
可以看到计算的数组大小是40,因为是整形数组,每个元素的大小是四个字节,一共有十个元素,所以数组的大小是40
那么数组元素的个数应该怎么计算呢,只需要用数组的大小除以数组一个元素的大小即可,例子如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[10]={0};
printf("数组的个数是:%d\n",sizeof(arr)/sizeof(arr[0]));
system("pause");
return 0;
}
运行结果
但是如果是在函数形参里面定义的数组,那么计算结果就会完全不一样,因为形参中虽然写的是一个数组的样子,但是中括号是无效的,不管写多大都不能代表数组的大小,形参中数组的中括号仅仅只代表一个地址。例子如下
#include <stdio.h>
#include <stdlib.h>
void hans(int data[10])
{
printf("形参中数组的大小:%d\n",sizeof(data));
}
int main()
{
int arr[10]={0};
printf("数组的大小是:%d\n",sizeof(arr));
hans(arr);
system("pause");
return 0;
}
计算出来的 4 只是我用的软件用四个字节代表地址,如果是在其他编译软件上可能会有所差别