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/

  • 相关阅读:
    JavaSE 学习笔记04丨异常
    Codeforces Round #677 (Div. 3) E、G题解
    JavaSE 学习笔记03丨继承、接口、多态、内部类
    ftp通过了用户验证但是连接超时
    实型变量
    3dmax放样
    画直线算法
    VAE变分自动编码器
    RNN 、LSTM长短期记忆网络
    java比较字符串
  • 原文地址:https://www.cnblogs.com/tanrong/p/8516948.html
Copyright © 2011-2022 走看看