如何通过编程的手段获取某个数组的长度呢?

答案是使用关键字 sizeof。

前面说过,用 sizeof 可以获得数据类型或变量在内存中所占的字节数。同样,用 sizeof 也可以获得整个数组在内存中所占的字节数。因为数组中每个元素的类型都是一样的,在内存中所占的字节数都是相同的,所以总的字节数除以一个元素所占的字节数就是数组的长度。

那么如何用 sizeof 获得数组总的字节数呢?只要对数组名使用 sizeof,求出的就是该数组总的字节数。下面写一个程序看一下:

# include

int main(void)

{

int a[10] = {0};

printf("sizeof(a) = %d\n", sizeof(a));

return 0;

}

输出结果是:

sizeof(a) = 40

数组 a 是 int 型的,每个元素占 4 字节,所以长度为 10 的数组在内存中所占的字节数就是 40。而总的字节数除以一个元素所占的字节数就是数组的长度,如下面这个程序:

# include

int main(void)

{

int a[10] = {0};

int cnt = sizeof(a) / sizeof(a[0]);

printf("cnt = %d\n", cnt);

return 0;

}

输出结果是:

cnt = 10

这样不管数组是增加还是减少元素,sizeof(a)/sizeof(a[0]) 都能自动求出数组的长度。需要注意的是,它求出的是数组的总长度,而不是数组中存放的有意义的数据的个数。比如定义一个int型的数组:

int a[10] = {1, 2, 3, 4, 5};

我们只初始化了五个元素,但是 sizeof(a)/sizeof(a[0]) 求出的是 10,而不是 5。换句话说,我们无法通过 sizeof(a)/sizeof(a[0]) 求出数组中有多少个有意义的数据。

使用库函数strlen

lenght = strlen(str);

这种方法只适用于字符串数组

使用while循环遍历计数

int i=0;

while(str[i++] != '\0');

这种方法适用于计算数组中实际元素多少

到此这篇关于C语言获取数组长度的几种方法的文章就介绍到这了,更多相关C语言获取数组长度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

c语言整形数组长度_C语言获取数组长度的几种方法相关推荐

  1. c语言整形符号位_c语言获取符号位整数和浮点

    1. 为什么你应该得到的签位 非常多的时间,我们需要推断的数目值正和负,做了相应的逻辑处理.完成这一要求条件推断语句可以很好. 有时会出现以下情况, if (x > 0) { x = x - 1 ...

  2. php数组比对算法,php学习之两种方法使用比较数组差异的array_diff()函数

    本篇文章将简单介绍php比较两个数组的差异array_diff()函数,感兴趣的朋友可以了解一下. php内置函数中有一个array_diff():意思比较两个数组的键值,并返回差集. 下面是通过数组 ...

  3. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  4. python二维数组换行输出_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  5. java二维数组如何传参_C语言中二维数组作为函数参数来传递的三种方法

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include void func(int n, char str[ ][5] ) { i ...

  6. JS数组学习之清空全部元素的4种方法(代码详解)

    数组是JavaScript中的十分常用且重要的数据类型,而删除数组元素是一种常见的数组操作,JavaScript中内置了很多用于删除数组元素的函数,因此删除数组元素对我们来说并不难.那么删除数组元素的 ...

  7. 快速排序——寻找数组第K大数(由浅入深,四种方法对比讲解!)

    寻找数组第K大数是大厂面试中经常考到的一题,有的小机灵鬼直接用sort()进行排序,两行代码解决,这样看似可行,实则掉入了出题人的陷阱.面试官希望看到的是你对算法的理解,而不是函数的调用.下面,我就以 ...

  8. php 二维数组 第一个,php二维数组排序几种方法

    二维数组排序排序在php中也提供了一个函数array_multisort就可以直接排序了,下面我来介绍除了全使用array_multisort 对数组进行排序我们还写了一些自定二维数组排序方法. 有时 ...

  9. cad与连接mySQL数据库_C++连接mysql数据库的两种方法

    现在正做一个接口,通过不同的连接字符串操作不同的数据库.要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多.通过网上的一些资料和自己的摸索,大致清楚了C++连接m ...

最新文章

  1. 硬链接、软链接的区别
  2. javascript之原型与原型链
  3. EasyStruct.js轻松创建可填入式html模板结构
  4. SQL中declare申明变量
  5. .Net应该学什么怎么学(三)
  6. 【Matlab】for循环进度条显示百分比进程和剩余时间
  7. Android图片粘上后仍错误,android – 在Activity被销毁后,ImageView上的图像丢失了
  8. 【初级】String str= ac,42,123,sd Fa,c df,4,acdf,5ewRRre ;1.把字符串按,进行分割
  9. 依赖注入在 dotnet core 中实现与使用:2 使用 Extensions DependencyInjection
  10. leetcode 992. K 个不同整数的子数组(滑动窗口)
  11. python xpath定位打印元素_python基础教程:8种selenium元素定位的实现
  12. 计算机网络体系结构物流层,计算机网络体系结构58029.ppt
  13. 什么是python全栈开发_什么是python全栈
  14. QT界面大小自动变化
  15. 从办公桌可以看透一个人
  16. 专线服务器安全维护,服务器系统安全维护
  17. android adb工具命令大全
  18. SAS 入门(二)实战篇
  19. 华为手机html乱码,华为手机系统语言变成乱码了怎么办?
  20. Google 按图搜索的原理

热门文章

  1. 戳气球--LeetCode312
  2. Android获取软键盘的高度、键盘的打开与关闭、监听键盘处于打开还是关闭状态
  3. kafka深入研究之路(1)-剖析各原理02
  4. 微信遮罩php,微信小程序 遮罩功能实现
  5. xshell如何连接远程服务器
  6. 2.redis高可用-持久化-主从复制-哨兵-cluster集群概述与部署,内容依旧多看完直接通透!
  7. 婚姻 一辈子的幸福厮守 请不要多拿彩礼和父母说事
  8. 309、各品牌路由器登录网址大全 路由器默认用户名/密码
  9. 丁丁学数学(2-3)
  10. 天冷不可怕,心冷才可怕!!!