如何获取C指针数组的长度?

可能重复:
函数参数中的数组长度

有没有像C can数组那样的Java can .length方法? 谢谢。

不,给定一个C指针,你无法以平台无关的方式确定它的长度。

对于一个实际的C数组虽然看到了dirkgently的答案

你可以使用宏来获取它:

#define sizeofa(array) sizeof array / sizeof array[ 0 ] 

当且仅当数组是自动的并且您在其定义范围内访问它时:

 #include  int main() { int x[] = { 1, 2, 3 }; printf("%zd\n", sizeofa( x )); return 0; } 

但是,如果您只有一个(衰变的)指针,则无法使用某些非便携式实现特定的hack来获取数组长度。

如果您使用MSVC / MinGW,那么有一个真正的C指针的NONPORTABLE解决方案:

 #include  char *s=malloc(1234); #ifdef __int64 printf( "%lu\n", _msize(s)); #else #endif 

对于像真正的C-Array一样

 AnyType myarray[] = {...}; 

要么

 AnyType myarray[constVal]; 

看到另一个答案。