学过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"}

则所求得的长度为字符数组的长度,而不是对应的字符串的长度,要求字符串的长度还需要减一。原因为存储字符串的字符数组末尾有一个'\0'字符,需要去掉它。

对于下例:

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("%d\n",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 << getArrayLen(a) << endl;

return 0;

}

输出结果为:3

c 语言求字符数组长度,C/C++中获取数组长度的方法示例相关推荐

  1. Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度-*

    ylbtech-Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度 1.返回顶部 Java 实例 - 获取数组长度  Java 实例 本文我们将为大家介绍如何使用数 ...

  2. php 获取array的长度_php中获取数组长度的方法

    php中获取数组长度的方法 php获取数组长度的方法,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度,还有获取二维数组的方法,在php中获取数组长度方 ...

  3. Java中获取数组长度

    Java中获取数组长度 方法: 使用数组属性length来获取数组长度 代码: public class ArrayLength {public static void main(String[] a ...

  4. JavaScript-创建数组的两种方法,数组的遍历,lenght获取数组的长度,在数组末尾追加元素

    数组概述 数组是一组相关数据的集合,其中的每一个值被称作元素,每个元素在数组中都有对应的位置(下标)就是元素的索引,通过下标就能很方便的获取对应下标的元素:当我们想要连续存放多个数据时就可以使用数组来 ...

  5. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  6. golang中获取字符串长度的办法

    1.不同字符与获取字符串长度 获取字符串长度,是字符串操作的重要方法.理论来说,获取字符串长度,只要从头到尾查找一遍就可以了.但遗憾的是,不同字符具有不同的编码格式.拉丁字母一个字符只要一个字节就行, ...

  7. android 从资源中获取数组

    8.1. 从资源中获取数组 8.1.1.概述 除了在Java代码中定义数组,Android还提供了在资源中定义数组,然后在Java代码中解析资源,从而获取数组的方法. 实际开发中,推荐将数据存放在资源 ...

  8. Lua中获取字符串长度

    偶然的情况下,需要用Lua代码获取字符串的长度,结果发现结果和自己想象的不一样,一个汉字算两个英文字符的时代已经快过去了,一个中文字符打印出来的长度为3,引起了我的好奇,查找资料了解了具体原因 不同的 ...

  9. PHP中获取数组中单列的值

    PHP中获取数组中单列的值如下: 利用PHP中的数组函数 array_column():返回数组中某个单列的值.(PHP 5.5+适用) 语法: array_column(array,column_k ...

最新文章

  1. 【推荐】iOS汉字转拼音第三方库
  2. 从pfx里面 解析出公私钥
  3. 在IAR下如何查看工程的堆栈(STM32)
  4. 如何优化网页转化率?(中篇)
  5. 浏览器关闭 session并不会被干掉
  6. Nginx+Tomcat动静分离
  7. python每天学多久_怎么自学python,大概要多久?
  8. Tomcat压缩传输设置
  9. 测试导航卫星软件,北斗卫星导航定位系统简介及北斗测绘测亩仪应用
  10. 驱动精灵扩展版(集成万能网卡驱动)无法自动识别网卡的解决方案
  11. 中信路由器关闭虚拟服务器,非常简单的中兴路由器重置方法
  12. 营业执照注册号是不是统一社会信用代码?
  13. 笔记本计算机待机后显示器,Win10笔记本电脑休眠唤醒后屏幕还是黑屏怎么办?...
  14. 【Python爬虫】下载b站视频。超详细。
  15. Linux七大项目作业详细步骤
  16. vue结合百度地图绘制工具遇到的问题及解决方案(多边形编辑状态下形状显示不全、marker点添加事件无效)
  17. CSUST选拔赛题解之-Problem H: 逃出监狱
  18. 数据流代替工作流解决方案
  19. linux设备驱动归纳总结(八):4.总线热插拔
  20. HDU 1243 反恐训练营(最长公共序列)

热门文章

  1. Chapter 1-2: Installing Python - Installing Python 3 on a Macintosh | Python for Everybody 讲义笔记_En
  2. 毕莹python_使用 qemu-kvm 安装和运行 Vagrant | Linux 中国
  3. (工具包)之zip与rar解压
  4. HDU5661 Claris and XOR(异或贪心)
  5. Github常用收藏及网址
  6. linux基本操作及shell编程使用和vim
  7. 忘掉一个人最有效、最彻底的方法
  8. infraworks渲染问题汇总
  9. matlab 调用子函数返回值,matlab学习笔记13_1 函数返回值
  10. 5步教会你,如何操作抖音小店,你也能日出千单