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/C++中如何获取数组的长度?

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

  2. C/C++中如何获取数组的长度?

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

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

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

  4. C/C++获取数组的长度

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

  5. C++获取数组的长度

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

  6. C/C++中获取数组的长度

    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. IP保留地址

    保留地址的网络只能在内部进行通信,而不能与其他网络互连.因为本网络中的保留地址同样也可能被其它网络使用,如果进行网络互连,那么寻找路由时就会因为地址的不唯一而出现问题. 但是这些使用保留地址的网络可以 ...

  2. 自然语言处理之关键词提取TF-IDF

    统计每篇文章重要的词作为这篇文章的关键词,用tf-idf来实现.生产中有很多第三包可以调用,这里记录原理,顺便熟练python 1.公式 : 计算词频TF 考虑到文章有长短之分,为了便于不同文章的比较 ...

  3. linux命令知识点

    1. 例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令: 命令:ls -l t* 例六:计算当前目录下的文件数和目录数 命令: ls -l * |grep "^-&qu ...

  4. 通过设置ie的通过跨域访问数据源,来访问本地服务

    1.首先设置通过域访问数据源 设置通过域访问数据源 2.javascript脚本ajax使用本地服务登录(评价,人证的类似)接口 <html> <head> <scrip ...

  5. PHP7运行环境搭建(Windows7)

    注:本文来源于<    PHP7运行环境搭建(Windows7)   > php7号称能直追facebook的HHVM,为了体验一把传说中的高性能,我特意在本地电脑上尝试着安装了php7, ...

  6. Confluence 6 为空白空间编辑默认主页

    希望编辑默认(空白)空间内容模板: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链接. 在左侧的面板中选择 全局模板和蓝图(Global Templates ...

  7. vue install后出现的问题

    出现这个问题你要先把node-sass移除后重新安装 执行下面命令 npm remove node-sass --save-dev 然后安装 npm install node-sass@latest ...

  8. 五.ssh远程管理服务

    01. 远程管理服务知识介绍 1) SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Working Group)制定: ...

  9. laravel CSRF 保护

    在开始之前让我们来实现上述表单访问伪造的完整示例,为简单起见,我们在路由闭包中实现所有业务代码: Route::get('task/{id}/delete', function ($id) { ret ...

  10. 网络编程—udp

    一.ip地址 1. 什么是地址 地址就是用来标记地点的 2. ip地址的作用 ip地址:用来在网络中标记一台电脑,比如192.168.1.1:在本地局域网上是唯一的. 3. ip地址的分类 每一个IP ...