1、用整个数组的sizeof去除以一个元素的sizeof。
#include<stdio.h>
#define Count (sizeof(array)/sizeof(array[0])) 或 #define Count (sizeof(array)/sizeof(数组类型,如int/double等))
int main()
{
int array[] = {1,2,3,4,5,6,7};
printf("%d\n",Count);
return 0;
}
p.s.
#define Count (sizeof(array)/sizeof(array[0])) 或 #define Count (sizeof(array)/sizeof(数组类型,如int/double等)),本质一样,两者等价。也可以把array作参数传值,#define Count(array) (sizeof(array)/sizeof(array[0])) ,结果一样。
2、下列例子返回打印结果为1。
数组名在当参数传递时,会完全退化为指针,
这样写 int Count(int array[]) 和 int Count(int *array),完全一样
所以,sizeof(array)其实求的是指针的大小,指针大小总是为4个字节的,所以 sizeof(array)/sizeof(Any)总是为1
#include<stdio.h>
template<class Any>
int Count(Any *array)
{
return (sizeof(array)/sizeof(Any));
}
int main()
{
int array[ ] = {1,2,3,4,5,6,7};
printf("%d\n",Count(array));
return 0;
}