如何获取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];
看到另一个答案。