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};
int l =sizeof(buf) / sizeof(int);
printf("%d
", 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]);
}
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了