http://topic.csdn.net/t/20051128/15/4423431.html
1.用宏是可以的这样写
#define ArraySize(ARR) (sizeof(ARR) / sizeof(ARR[0]))
楼上的楼上要加括号的。
#include
#define ArraySize(ARR) (sizeof(ARR)/sizeof(ARR[0]))
int
main(void)
{
int arr[5];
printf( "Array size is : %d\n ", ArraySize(arr));
return 0;
}
2.不要使用_msize对数组的大小进行测定,_msize只能对使用malloc或calloc申请的内存进行大小测定,对于其它的如new或一些API,将会导致程序的崩溃
3.非常规的,不安全的做法
#include "iostream.h "
#include "malloc.h "
int size(int a[] )
{
return _msize(a) / sizeof(int);
}
main()
{
int * pI = new int[12];
int i = size (pI); // i = 12; 但是如果你传递的pI不是首指针的话就异常了
}
4.sizeof是编译器间静态求值的。他必须知道对象的准确类型。