zoukankan      html  css  js  c++  java
  • C/C++中获取数组的长度

    C/C++中没有提供直接获取数组长度的函数。对于存放字符串的字符数组,可用strlen函数获取长度

    如:char a[]="hello world";int count = strlen(a);

    对于其他类型的数组,可使用sizeof(array)/sizeof(array[0]),计算长度。

    在C中,可在使用时把它定义成宏,

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

    在C++中,可使用模板技术,定义这个函数,需要将数组参数作为引用类型传递,否则数组名称会退化为一个指针,这样就无法计算数组的大小sizeof(a)。

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

    对于存放字符串的字符数组,也可以使用这种方法来计算长度,但是计算后的值需要减去1,

    即sizeof(a)/sizeof(a[0])-1,因为字符串默认带有结束符号''

    使用示例如下:
    C语言:

    #include<stdio.h>
    #define GET_ARRAY_LENGTH(array,len){len=(sizeof(array)/sizeof(array[0]));}
    int main()
    {
        char a[]={'1','2','3'};
        int num;
        GET_ARRAY_LENGTH(a,num);
        printf("%d
    ",num);
        return 0;
    }

    C++语言:

    #include<iostream>
    template<class T>
    int GetArrayLen(T& a)
    {
        return sizeof(a)/sizeof(a[0]);
    }
    int main()
    {
        char a[]={'1','2','3'};
        int num = GetArrayLen(a);
        std::cout<<num<<std::endl;
        return 0;
    }
  • 相关阅读:
    VM虚拟机Linux和主机数据传输
    Linux CentOS 虚拟机下联网
    SQL 注入漏洞
    BurpSuite 各模块使用
    御剑指纹识别
    C#数组2(多维数组)
    C#数组1
    C#简单的枚举及结构
    ABAP性能1 | LOOP嵌套LOOP代码分析 (转)
    占位符使用(竖式计算)
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/5535387.html
Copyright © 2011-2022 走看看