C/C++中如何获取数组的长度(宏&模板)

时间:2023-01-27 21:10:51

C、C++中没有提供 直接获取数组长度的函数。对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用  sizeof(array) / sizeof(array[0])

在C语言中习惯上在 使用时都把它定义成一个宏,比如

#define GET_ARRAY_LEN(array, len) { len = sizeof(array)/sizeof(array[0]);}

代码实例:

#include<cstdio>
#include<iostream>
using namespace std; #define GET_LEN(array, len) { len = sizeof(array)/sizeof(array[0]);} int main()
{
int list[] = {,,,,,,,,,};
int length;
GET_LEN(list, length);
printf("%d\n", length);
return ;
}

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

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

代码实例:

#include<cstdio>
#include<iostream>
using namespace std; template <class T>
int getArrayLen(T&array)
{
return sizeof(array) / sizeof(array[]);
}
int main()
{
int list[] = {,,,,,,,,,};
int length = getArrayLen(list);
printf("%d\n", length);
return ;
}

这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。

参考链接:http://blog.csdn.net/bopzhou/article/details/6063163/

C/C++中如何获取数组的长度(宏&模板)的更多相关文章

  1. C&sol;C&plus;&plus;中如何获取数组的长度?

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

  2. C&sol;C&plus;&plus;中如何获取数组的长度&quest;

    C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / ...

  3. php中如何获取数组长度

    php获取数组的长度的方法 一.总结 一句话总结:count方法和sizeof方法 二.php获取数组的长度的方法 php获取数组长度的方法: 一). 获取一维数组的方法: 1.count.sizeo ...

  4. C&sol;C&plus;&plus;获取数组的长度

    C.C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / ...

  5. C&plus;&plus;获取数组的长度

    C++获取数组的长度 #include<iostream> using namespace std; template<class T> int length(T& a ...

  6. C&sol;C&plus;&plus;中获取数组的长度

    C/C++中没有提供直接获取数组长度的函数.对于存放字符串的字符数组,可用strlen函数获取长度. 如:char a[]="hello world";int count = st ...

  7. shell 脚本获取数组字符串长度

    #!/bin/sh source /etc/init.d/functions funOne() { array=(I am dfh kjlhfjksdf sdfj jdkfhaskl mjjoldfu ...

  8. Java 中正确获取中文字符串长度

    /** * 获取字符串的长度,如果有中文,则每个中文字符计为2位 * * @param value * 指定的字符串 * * @return 字符串的长度 */ public static int l ...

  9. js中如何获取对象的长度和名称

    js如何获取对象长度和名称 一.总结 一句话总结:对象的长度不能用.length获取,用js原生的Object.keys可以获取到 var obj = {'name' : 'Tom' , 'sex' ...

随机推荐

  1. asp&period;net页面间传值方式

    使用asp.net开发项目,必然会在页面间进行传值,本文介绍几种常见的页面传值方式,仅作笔记,以便后续查找使用. 前提:新建两个页面:ValuePage.aspx,ObtainValue.aspx,本 ...

  2. Intel Code Challenge Elimination Round &lpar;Div&period;1 &plus; Div&period;2&comma; combined&rpar; A B C D 水 模拟 并查集 优先队列

    A. Broken Clock time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. ts 使用Visual Studio2012和TFS网站管理源代码

        所需工具 Visual Studio 2012 http://tfs.visualstudio.com/ 微软网站 微软账号  hotmail 或live都行 达到目的 适合于个人项目,多用户 ...

  4. &period;net SMTP发送Email 更新(可带附件)

    public static void sendEmail(string toAddress, string emailbody)         {             var fromAddre ...

  5. js动画(一)

    终于放寒假了,哈哈哈,然后,也不准备闲着吧,就是再熟悉一下旧的东西,然后把新的东西也拿来分享一下,自己也准备好了再这个寒假 好好的提高一下自己,哎,菜鸟一枚,真正去实战了,发现自己手上的武器太少了,所 ...

  6. MATLAB算术运算符和常用函数

    1 算术运算符 Matlab中的算术运算符按优先级由高到低为: (1) ^           幂 (2) *            乘      /            右除(正常除)       ...

  7. Junit单元测试随笔

    Junit单元测试随笔 Mooctest 使用心得: Mooctest IDE非常适合新手使用,相比于Eclipse,他免去了配置环境的麻烦.eclipse中 Junit 编写代码经验总结 刚开始写测 ...

  8. DWR第六篇之文件下载

    1. 在第五篇架构基础上进行修改 2. 修改jsp页面 <html> <head> <base href="<%=basePath%>"& ...

  9. thinkphp5 如何监听sql?

    第一步 在database配置文件中开启 // 是否需要进行SQL性能分析'sql_explain' => true, 第二步 在需要测试的sql前,使用以下demo Db::listen(fu ...

  10. &lbrack;CB&rsqb;2018全球半导体营收4700亿美元 三星继续碾压英特尔

    2018全球半导体营收4700亿美元 三星继续碾压英特尔 https://www.cnbeta.com/articles/tech/808833.htm Gartner最新报告显示,2018年全球半导 ...