有没有像C can数组那样的Java can .length方法?谢谢。
答案 0 :(得分:6)
不,给定一个C指针,你无法以平台无关的方式确定它的长度。
对于实际的C数组,虽然看到了dirkgently的answer
答案 1 :(得分:3)
您可以使用宏来获取它:
#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;
}
但是,如果你只有一个(衰变的)指针,你就无法获得数组长度而不诉诸某些非便携式实现特定的黑客攻击。
答案 2 :(得分:1)
如果你使用MSVC / MinGW,那么有一个真正的C指针的NONPORTABLE解决方案:
#include <malloc.h>
char *s=malloc(1234);
#ifdef __int64
printf( "%lu\n", _msize(s));
#else
#endif
对于像
这样的真实C-ArrayAnyType myarray[] = {...};
或
AnyType myarray[constVal];
见另一个答案。