C/C++数组长度的获取
程序员文章站
2024-02-25 22:13:09
...
问题产生
- 写OJ题时遇到一个问题:
- C++字符串长度可以直接用#include<string.h>里的strlen()函数得到
- 但是数组的长度无法直接获取
- 一维数组的长度网上有比较多的说明,而我正好要用到二维数组长度的获取
所以整理一下记录下来:
言归正传
在C++里,字符串长度可以用strlen()函数获取,但是C++不支持数组的长度直接获取,所以我们要用数组的大小来计算出它的长度
主要是根据程序执行时给定义的变量分配内存大小是固定的,我们用sizeof()获取变量大小,比如:int型数组就用数组大小除以单个int变量的大小,这样就能得到数组的长度。
C++中我们可以定义一个模板template,C中我们可以定义一个宏,方便我们使用。
下面C++代码说明:
一维数组:
#include <iostream>
using namespace std;
template <class T>
int length(T& arr)
{
return sizeof(arr) / sizeof(arr[0]);//数组大小除以数组第一个数大小得出数组长度
}
二维数组道理也一样:
#include <iostream>
using namespace std;
template <class T>
int length(T& arr)
{
int m = sizeof(arr) / sizeof(arr[0][0]);
int n = sizeof(arr[0]) / sizeof(arr[0][0]);//这是行的长度
return m/n;//这是列的长度
}
当然你也可以写成:
return sizeof(arr) / sizeof(int);//数组int型所以除以一个int型大小
二维也一样,只要是统一变量类型就行
上一篇: 正确理解python中的关键字“with”与上下文管理器
下一篇: 字符串长度