计算数组中元素个数的方法

本文详细解释了字符数组和字符串数组的区别,sizeof操作符和strlen库函数在计算长度上的差异,以及数组名a与&a的不同含义。特别强调了字符数组的结束标志和sizeof与strlen在不同情况下的适用性。
摘要由CSDN通过智能技术生成

一:sizeof(操作符)

二:strlen(库函数)

三:字符数组和字符串数组

四:数组名a和&a

一:字符数组和字符串数组

(1):字符数组跟字符串数组两者是不同的一个概念。

(2):字符数组:系统不会自动的在字符数组结束的后面一个空间加上一个NULL以表示结束。比如说char a[2]={'c','b'};这个时候字符数组的长度就是2。并且这个数组里面也没有字符数组结束的标志NULL,因此系统会往后找什么时候在字符数组的后面找到了NULL,那么系统就会认为这个字符数组才结束。这个时候系统理解的字符数组跟我们初始化的字符数组是有区别的。

char a[3]={'c','b'};像这个这个字符数组的长度是2,但是因为定义的数组长度为3,实际初始化的时候值初始化了a[0],a[1],因此系统会自动的给a[2]=NULL。

(3):字符串数组:*a="ac",a[]="ac",a[3]="ac"(注意这个不能用a[2]);像这种情况系统会自动的给“ac\0"。因此应该用3而不是2.所以字符串数组里面有隐藏的NULL。

二:sizeof

(1):sizeof因为是操作符而不是库函数,所以在使用sizeof来计算数组中元素个数的方法的时候,不需要头文件,而strlen函数需要。

(2):sizeof适用于所有求数组中元素个数的多少。

①:int float double 类型的数组。sizeof(数组名)/sizeof(类型名)。前者计算整个数组在计算机内所占的字节数,后者计算出一个这样类型的数组在计算机内所占的字节数。

②:字符数组和字符串数组。字符数组:使用sizeof时求得的是里面字符的个数。如果数组是a[3]={'a','c'}这种初始化的话,也是求得这个数组的长度,但是不是求得有效字符得个数,因为一般来说不会使用a[3](NULL)这个。

字符串数组:当使用sizeof的时候求得的是字符串数组里面元素个数加1的结果,因为还有一个隐藏的NULL在字符串数组当中。

三:strlen函数

(1):strlen函数是库函数,因此要使用头文件#include<string.h>。

(2):只能够求字符数组和字符串数组的字符长度,strlen求个数不包括NULL。

①:字符数组:对于a[2]={'a','c'}这种类型来说因为不知道字符数组后面第几个位置有NULL,因此所求得的字符长度也是不固定的。最幸运的一种情况就是在a[1]的后面就找到了NULL。要是对于a[3]={'a','c'}这种情况也就是求得是里面字符的长度(不包括NULL),而不是数组的长度。有时候字符长度跟数组长度是不一样的。

②:字符串数组:使用strlen函数,刚好求得是字符串的长度。请注意字符串长度跟数组长度是不一样的。

四:数组名a和&a

(1):数组名a只有在a单独这种情况下代表的是数组首元素的地址

(2):&a这个代表的是整个数组的地址,因此&a+1,代表的是整个数组之后的第一个地址。

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值