如何计算 C 语言数组长度

数组特点

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

一维数组

数组定义

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

一维数组长度计算

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

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

二维数组

数组定义

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

二维数组行数计算

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

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

二位数组列数计算

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

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

多维数组

三维数组

以三维数组为例

第一维数组长度

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

第二维数组长度

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

第三维数组长度

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

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])N​sizeof(array[0][0])N−1​​

计算示例

带入到一维数组
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 <stdio.h>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
*/

C语言——计算数组长度相关推荐

  1. C语言中数组长度的计算详解

    一. C语言中计算数组长度大小 C语言字符串长度的计算可以使用strlen(str); 但是对于数组长度的大小却没有相关函数可以使用: C语言数组长度的大小可以使用: int main() {int ...

  2. c语言中数组长度的计算

    c语言中数组长度的计算 一维数组 计算数组的长度:       sizeof(数组名):得到这个数组占用内存的总长度       公式: sizeof(数组名) / sizeof(数组类型); 二维数 ...

  3. C语言中数组长度的计算方法总结(sizeof与strlen)

    最近在重新学习C语言,学习中发现之前对数组长度的计算方法模糊不清.因此做个总结. 首先要明白什么是数组. 数组是一组相同类型元素的集合. 因此,要定义一个数组,首先要确定数组内的元素是同一种类型. 1 ...

  4. C++ 计算数组长度

    实现程序如下 #include<iostream>using namespace std;int main() {int s[] = { 0, 2, 5, 8 };int i;cout & ...

  5. C语言计算字符串长度的方法

    C语言计算字符串长度的方法 思路分析 字符串的结束标志是'\0',因此计算字符串的长度的核心思想就是通过字符指针顺序检索每一个字符,直到检测到'\0'为止,以下是实现该算法的几种方式. 代码实现 1. ...

  6. C语言计算字符串长度

    C语言计算字符串长度 2022-0105 blog_005 方法一: C语言标准库中有一个函数可以计算字符串长度,strlen(). 方法二: 根据字符串总是以 '\0' 结尾,自定义计算方法. 注意 ...

  7. c语言整形数组长度_C语言获取数组长度的几种方法

    如何通过编程的手段获取某个数组的长度呢? 答案是使用关键字 sizeof. 前面说过,用 sizeof 可以获得数据类型或变量在内存中所占的字节数.同样,用 sizeof 也可以获得整个数组在内存中所 ...

  8. C语言获得数组长度的函数

    1.c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数). 例如: double a[] = {1,2,3,4}; int length; length=sizeof(a)/si ...

  9. c语言 json数组长度,js 获取json数组里面数组的长度

    作为一个前端页面开发者第一次处理json数据,遇到了'js 获取json数组里面数组的长度'?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋 ...

最新文章

  1. 梯度下降法的三种形式-BGD、SGD、MBGD
  2. 【NLP】全面详解 | 深度学习中的注意力机制(一)
  3. gorm 密码字段隐藏_KeeWeb for mac(密码管理工具)
  4. [html] 你知道著名的3像素Bug指的是什么吗?怎么解决呢?
  5. 若依如何调整首页左侧菜单栏宽度
  6. 川菜中,你觉得哪道菜能称为“经典之菜”呢?
  7. FLUKE OTDR光纤测试仪OFP2-100-Q双光纤双向测试的方法
  8. 只有1kb的清理软件_1kb病毒专杀工具下载
  9. Nodemcu 背篼酥课堂--物联网实战体系课程
  10. c语言求最小公倍数_最小公倍数
  11. [转载] 华中科技大学学生违纪处分条例
  12. 使用tensorboard时http://localhost:6006打不开或desktop-2a1fhsu 已拒绝连接
  13. stop slave mysql_mysql执行stop slave一直卡在Killing slave的状态
  14. thinkPHP的帮助
  15. win10的IE闪退及“启用或关闭windows功能”里没有IE选项
  16. Hive分布式集群部署
  17. react中key的作用
  18. 少年,下班后你都做什么?
  19. 3D基础--Vertex
  20. 求助!如果想从事3D建模需要选择什么专业?

热门文章

  1. C语言中static与extern用法总结
  2. 第2章 Python 数字图像处理(DIP) --数字图像基础2 - 图像感知要素 - 图像取样和量化 - 空间分辨率和灰度分辨率
  3. Python字符串对齐方法(ljust()、rjust()和center())详解
  4. 集成seata到springboot,cloud项目,找不到事务分组
  5. 那些主流的淘宝客引流方法有哪些?
  6. Python性能测试工具汇总
  7. JAVA计算机毕业设计远程教育系统Mybatis+系统+数据库+调试部署
  8. 谷歌地图-Google Map
  9. Java面试:java小项目实例
  10. Excel随机任意数的加减乘除法