zoukankan      html  css  js  c++  java
  • C/C++中如何获取数组的长度(宏&模板)

    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[] = {1,2,3,4,5,6,7,8,9,0};
        int length;
        GET_LEN(list, length);
        printf("%d
    ", length);
        return 0;
    }

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

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

     代码实例:

    #include<cstdio>
    #include<iostream>
    using namespace std;
    
    template <class T>
    int getArrayLen(T&array)
    {
        return sizeof(array) / sizeof(array[0]);
    }
    int main()
    {
        int list[] = {1,2,3,4,6,5,7,8,9,0};
        int length = getArrayLen(list);
        printf("%d
    ", length);
        return 0;
    }

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

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

  • 相关阅读:
    杭电2031进制转换
    杭电2033人见人爱A+B
    【转】到底怎么样才叫看书?
    方便单个实体更新的DbContext扩展方法,比如Edit页面
    使用Newtonsoft.Json
    代码配置 vs. 配置文件
    进程到创建
    C#+VBA 操作EXCEL(转)
    基于定位的社交应用Foursquare开源网址(wp7)
    深入理解计算机系统实验
  • 原文地址:https://www.cnblogs.com/tanrong/p/8516948.html
Copyright © 2011-2022 走看看