简单有效的实现:
#define my_sizeof(x) ((char*)(&x + 1) - (char*)(&x))
这个实现解释了我之前的疑惑,
int arr[2];
int* ptr = arr;
sizeof(ptr)
的值显然为指针大小,64位机上是指针大小为8B;sizeof(arr)
的值为数组大小,这里即为16B,(&arr+1)
是以数组大小为单位加1,所以可以得到数组大小。
简单有效的实现:
#define my_sizeof(x) ((char*)(&x + 1) - (char*)(&x))
这个实现解释了我之前的疑惑,
int arr[2];
int* ptr = arr;
sizeof(ptr)
的值显然为指针大小,64位机上是指针大小为8B;sizeof(arr)
的值为数组大小,这里即为16B,(&arr+1)
是以数组大小为单位加1,所以可以得到数组大小。