• C语言——计算数组长度


    如何计算 C 语言数组长度

    数组特点

    • 长度固定(变长数组除外)
    • 数组每个元素占用的字节数相同即: sizeof(a[0]) = sizeof(a[1]) = sizeof(a[n])

    一维数组

    数组定义

    int array[5]
    
    • 1
    • sizeof(array) 整个数组占用的内存
    • sizeof(array[0]) 一个数组元素占用的内存

    一维数组长度计算

    一维数组长度计算公式: l e n g t h = 整 个 数 组 占 用 的 内 存 一 个 数 组 元 素 占 用 的 内 存 length = \frac{整个数组占用的内存}{一个数组元素占用的内存} length=

    length = sizeof(array) / sizeof(array[0]);
    
    • 1

    二维数组

    数组定义

    int array[5][6]
    
    • 1
    • sizeof(array) 整个数组占用的内存
    • sizeof(array[0]) 一行数组占用的内存
    • sizeof(array[0][0]) 一个数组元素占用的内存

    二维数组行数计算

    二维数组行数计算公式: l e n g t h = 整 个 数 组 占 用 的 内 存 一 行 数 组 占 用 的 内 存 length = \frac{整个数组占用的内存}{一行数组占用的内存} length=

    length = sizeof(array) / sizeof(array[0])
    
    • 1

    二位数组列数计算

    二维数组行数计算公式: l e n g t h = 一 行 数 组 占 用 的 内 存 一 个 数 组 元 素 占 用 的 内 存 length = \frac{一行数组占用的内存}{一个数组元素占用的内存} length=

    length = sizeof(array[0]) / sizeof(array[0][0])
    
    • 1

    多维数组

    三维数组

    以三维数组为例

    第一维数组长度

    length = sizeof(array) / sizeof(array[0])
    
    • 1

    第二维数组长度

    length = sizeof(array[0]) / sizeof(array[0][0])
    
    • 1

    第三维数组长度

    length = sizeof(array[0][0]) / sizeof(array[0][0][0])
    
    • 1

    N 维数组计算公式

    类比上面公式,计算数组第 N 维长度

    l e n g t h = s i z e o f ( a r r a y [ 0 ] [ 0 ] ) N − 1 s i z e o f ( a r r a y [ 0 ] [ 0 ] [ 0 ] ) N length = \frac {sizeof(array[0][0])_{N-1}} {sizeof(array[0][0][0])_{N }} length=sizeof(array[0][0][0])Nsizeof(array[0][0])N1

    计算示例

    带入到一维数组
    l e n g t h = s i z e o f ( a r r a y ) s i z e o f ( a r r a y [ 0 ] ) length = \frac{sizeof(array)}{sizeof(array[0])} length=sizeof(array[0])sizeof(array)

    带入到二维数组

    • 第一维长度
      l e n g t h = s i z e o f ( a r r a y ) s i z e o f ( a r r a y [ 0 ] ) length = \frac{sizeof(array)}{sizeof(array[0])} length=sizeof(array[0])sizeof(array)

    • 第二维长度
      l e n g t h = s i z e o f ( a r r a y [ 0 ] ) s i z e o f ( a r r a y [ 0 ] [ 0 ] ) length = \frac{sizeof(array[0])}{sizeof(array[0][0])} length=sizeof(array[0][0])sizeof(array[0])

    示例代码

    #include 
    
    int main(int argc, char *argv[])
    {
        int test_array1[10];
        int test_array2[7][8];
        int test_array3[3][4][5];
        long value;
    
        value = sizeof(test_array1) / sizeof(test_array1[0]);
        printf("一维数组长度:%ld \r\n", value);
    
        value = sizeof(test_array2) / sizeof(test_array2[0]);
        printf("二维数组行数:%ld \r\n", value);
    
        value = sizeof(test_array2[0]) / sizeof(test_array2[0][0]);
        printf("二维数组列数:%ld \r\n", value);
    
        value = sizeof(test_array3) / sizeof(test_array3[0]);
        printf("三维数组第一维长度:%ld \r\n", value);
    
        value = sizeof(test_array3[0]) / sizeof(test_array3[0][0]);
        printf("三维数组第二维长度:%ld \r\n", value);
    
        value = sizeof(test_array3[0][0]) / sizeof(test_array3[0][0][0]);
        printf("三维数组第三维长度:%ld \r\n", value);
        return 1;
    }
    /* 结果输出
    一维数组长度:10
    二维数组行数:7
    二维数组列数:8
    三维数组第一维长度:3
    三维数组第二维长度:4
    三维数组第三维长度:5
    */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
  • 相关阅读:
    C语言指针
    上周热点回顾(8.21-8.27)
    推荐云盘哪个好,各有各的优势
    ZooKeeper、CuratorFramework、Watcher、ConnectionStateListener
    【全志V3s】SPI NAND Flash 驱动开发
    OpenHD改造实现廉价高清数字图传(树莓派zero + ubuntu PC )——(二)Wifibroadcast Wifi广播通信
    VS2019连接Linux调试cmake项目
    Windows 小狼毫 如何在安装后指定用户配置文件文件夹
    研发过程中的文档管理与工具
    组件的使用
  • 原文地址:https://blog.csdn.net/tyustli/article/details/128207276