当前位置:  编程技术>c/c++/嵌入式

C/C++中获取数组长度的方法示例

    来源: 互联网  发布时间:2014-10-27

    本文导语:  学过C/C++的人都知道,在C/C++中并没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取其长度,那么对于其他类型的数组如何获取他们的长度呢? 其中一种方法是使用sizeof(array) / sizeof(array[0])...

学过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 
int getArrayLen(T& array)
{
  return (sizeof(array) / sizeof(array[0]));
}

这样对于一些简单的数组可以使用这个宏或者这个函数来获取数组的长度了。
 
以下是两个Demo程序,一个C语言的,一个C++的:

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

例如:

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

    
 
 

您可能感兴趣的文章:

  • PHP数组根据值获取Key的简单示例
  • java从输入流中获取数据并返回字节数组示例
  • 如何用ioctl函数获得一个if_req的数组,即获取所有网络接口的信息
  • 获取某路径下的所有文件名并保存到数组
  • php数组长度的获取方法(三个实例)
  • php获取数组中重复数据的实现代码
  • php获取数组长度的方法举例
  • php如何获取数组中重复数据
  • c#获取数组最大数的值示例
  • c#获取数组中最大数的值
  • PHP 如何获取二维数组中某个key的集合
  • JQuery index方法获取Jquery对象数组下标
  • 如何在java中获取dll中的字符串或者字符数组(通过jni)?
  • Java获取一维数组的最小值实现方法
  • Python获取网页编码的方法及示例代码
  • JSP 获取Spring 注入对象示例
  • Jquery获取元素的父容器对象示例代码
  • android获取当前手机号示例程序
  • bash获取当前路径示例
  • JQuery获取上传文件大小(示例)
  • 在RowCommand事件中获取索引值示例代码
  • php获取淘宝分类id(示例)
  • PHP获取php,mysql,apche的版本信息示例代码
  • 获取DataRow[]的值示例
  • php获取字段名示例分享
  • php获取文件内容最后一行示例
  • C#获取时间差的简单示例
  • python获取网页状态码示例
  • jsp页面获取服务器时间的简单调用示例
  • java正则表达式获取url的host示例
  • shell学习教程获取命令行参数示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • fd = popen(command, "r")怎么获取fd长度啊
  • jquery 获取文字宽度与显示长度的例子
  • php获取本机ip地址 php获取远程IP地址 iis7站长之家
  • 如何用获取一个图片文件的长度、高度数值??
  • MSSQL数据库获取TEXT字段的内容长度
  • mysql获取字符串长度函数(CHAR_LENGTH)
  • jQuery(js)获取文字宽度(显示长度)示例代码
  • C++中可正确获取UTF-8字符长度的函数分享
  • PHP获取中英混合字符串长度的方法
  • 使用Http Head方法获取文件长度的实现方法详解
  • java Servlet获取和设置cookie实例代码
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法
  • 关于获取在jsp上获取客户端时间的问题
  • php获取访客ip地址原理及提供七段代码供参考
  • 关于Ganglia中的gmond组件收集到的资源信息如何获取(如何获取telnet后返回的信息)
  • java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径
  • 利用sender的Parent获取GridView中的当前行(获取gridview的值)
  • php获取本机ip地址 php获取远程IP地址
  • linux获取主机名后用gethostbyname() 不能获取主机ip
  • javascript 获取url参数的正则表达式(用来获取某个参数值)
  • 在gtk下,怎样获取系统时间??怎样获取当前的目录路径???
  • C++获取文件哈希值(hash)和获取torrent(bt种子)磁力链接哈希值
  • linux根据pid获取进程名和获取进程pid(c语言获取pid)
  • Shell获取系统时间问题
  • android 如何获取MCC/MNC控制小区广播的开启
  • 新手问题:Linux下如何获取进程占用的系统资源
  • c++如何获取当前进程名
  • 怎么通过snmp获取远程主机指定进程信息?
  • C#获取路径的多种方法
  • 怎样获取终端的所有打印消息




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3