我是靠谱客的博主 多情小猫咪,最近开发中收集的这篇文章主要介绍C/C++ 中如何获取数组长度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C、C++中没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?

其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 

而在C++中则可以使用模板技术定义一个函数,比如:

template <class T>
int getArrayLen(T& array)
{
   return (sizeof(array) / sizeof(array[0]));
}

这样对于一些简单的数组可以使用这个宏或者这个函数来获取数组的长度了。

 

以下是两个Demo程序,一个C语言的,一个C++的:

PS:若数组为存储字符串的字符数组,即以双引号括起来的字符串整体初始化的字符数组

例如:char a[]="abcdefg"或者char a[]={"abcdefg"}

则所求得的长度为字符数组的长度,而不是对应的字符串的长度,要求字符串的长度还需要减一

原因为存储字符串的字符数组末尾有一个''字符,需要去掉它。

对于char a[]="abcdefg"

sizeof(a)/sizeof(a[0])=8,要求字符串长度的话应该减1.

但对于char a[]={'a','b','c','d','e','f','g'}

sizeof(a)/sizeof(a[0])=7

【C语言】

#include <stdio.h>
#include <stdlib.h>
 
#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));}
//定义一个带参数的宏,将数组长度存储在变量len中
int main()
{
  char a[] = {'1','2','3','4'};
  int len;
 
  GET_ARRAY_LEN(a,len)
//调用预定义的宏,取得数组a的长度,并将其存储在变量len中
  printf("%dn",len);
 
  system("pause");
  return 0;
}

输出为4

 

【C++】

#include <iostream>
using namespace std;
 
template <class T>
int getArrayLen(T& array)  //使用模板定义一个函数getArrayLen,该函数将返回数组array的长度
{ 
  return (sizeof(array) / sizeof(array[0]));
}
int main()
{
  char a[] = {'1','2','3'};
  cout << getArrayLen(a) << endl;
 
  return 0;
}
输出为3

最后

以上就是多情小猫咪为你收集整理的C/C++ 中如何获取数组长度的全部内容,希望文章能够帮你解决C/C++ 中如何获取数组长度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部