欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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型大小

二维也一样,只要是统一变量类型就行