入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

C语言 获取int数组长度

创建时间:2014-08-22 投稿人: 浏览次数:136

函数通过参数传入一个数组的指针,如何获取该数组的长度?

如 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。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像