可能是重复问题:
函数参数中的数组长度
是否有像Java可以从C指针数组中取得长度的方法?谢谢。
不,无法以跨平台的方式确定C指针的长度。
但对于实际的C数组,可以参考dirkgently的答案
您可以使用宏来获取它:
#define sizeofa(array) sizeof array / sizeof array[ 0 ]
只有当数组是自动的并且您在其定义范围内访问它时,才会发生这种情况:
#include <stdio.h>
int main() {
int x[] = { 1, 2, 3 };
printf("%zd\n", sizeofa( x ));
return 0;
}
然而,如果你只有一个(已经损坏的)指针,那么你不能在不使用一些非可移植实现特定的技巧的情况下获得数组长度。
size_t
类型或者对应的有符号整数类型参数;或者紧接着的n格式说明符适用于指向对应于size_t
类型参数的有符号整数类型的指针。 - dirkgently#include <malloc.h>
char *s=malloc(1234);
#ifdef __int64
printf( "%lu\n", _msize(s));
#else
#endif
针对真正的 C 数组
AnyType myarray[] = {...};
或者
AnyType myarray[constVal];
请查看其他答案。