C语⾔获取int数组长度函数通过参数传⼊⼀个数组的指针,如何获取该数组的长度?
如 int InsertSort(int* array)
其中array的长度如何获取?
⽤过sizeof(array) / sizeof(int),始终是1
注意当数组作为函数的参数进⾏传递时,该数组⾃动退化为同类型的指针。
sizeof是在编译阶段展开的⼀个宏
错误,函数参数在运⾏阶段以压栈⽅式传递了⼀个地址
int mylen(int buf[])
{
return sizeof(buf) / sizeof(int);
}
正确,因为buf的分配过程是在编译阶段定义。
int main(void)
{
int buf[] = {0, 0, 0, 0};
python获取数组长度int l =sizeof(buf) / sizeof(int);
printf("%d\n", l);
system("pause");
return 0;
}
C++/C语⾔没有办法知道指针所指的内存容量,除⾮在申请内存时记住它。
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
template<class T>
int getArrayLen(T& array)
{
return sizeof(array)/sizeof(array[0]);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论