志在指尖
用双手敲打未来

数组长度(C函数怎么计算数组长度)

数组长度

如何经过编程的手法获取某个数组的长度呢?
答案是使用关键字sizeof。
前面说过,用sizeof可以获得数据类型或变量在内存中所占的字节数。同样,用sizeof也可以获得整个数组在内存中所占的字节数。因为数组中每个元素的类型都是一样的,在内存中所占的字节数都是相同的,所以总的字节数除以一个元素所占的字节数便是数组的长度。
那么如何用sizeof获得数组总的字节数呢?只需对数组名使用sizeof,求出的便是该数组总的字节数。下面写一个程序看一下:
#include
intmain(void)
{
inta[10]={0};
printf(“sizeof(a)=%d\n”,sizeof(a));
return0;
}
输出结果是:
sizeof(a)=40
数组a是int型的,每个元素占4字节,所以长度为10的数组在内存中所占的字节数便是40。而总的字节数除以一个元素所占的字节数便是数组的长度,如下面这个程序:
#include
intmain(void)
{
inta[10]={0};
intcnt=sizeof(a)/sizeof(a[0]);
printf(“cnt=%d\n”,cnt);
return0;
}
输出结果是:
cnt=10
这样不管数组是增加仍是削减元素,sizeof(a)/sizeof(a[0])都能自动求出数组的长度。需要留意的是,它求出的是数组的总长度,而不是数组中寄存的有意义的数据的个数。比方界说一个int型的数组:
inta[10]={1,2,3,4,5};
咱们只初始化了五个元素,但是sizeof(a)/sizeof(a[0])求出的是10,而不是5。换句话说,咱们无法经过sizeof(a)/sizeof(a[0])求出数组中有多少个有意义的数据。C

数组长度C函数怎么计算数组长度

(1)借助sizeof()函数:
#include
intmain()
{
//界说一个整型数组,并进行初始化赋值9个数据:
intarr[]={1,2,3,4,5,6,7,8,9};
intlength=0;
//核算数组中数据长度:
//一切数据的字节数除以一个数据的字节数即为数据的个数:
length=sizeof(arr)/sizeof(int);
printf(“数组的长度为:%d\n”,length);
return0;
}
(2)上面的办法会呈现一个误区
那便是当数组作为实参传递到另一个函数时,而这个函数履行了上面相同的办法,成果出来的不会正确的数组的长度:
测验代码:
#include
voidtest(intarr[])
{
intlength=0;
length=sizeof(arr)/sizeof(int);
printf(“test_数组的总字节数为:%d\n”,sizeof(arr));
printf(“test_数组的长度为:%d\n”,length);
}
intmain()
{
//界说一个整型数组,并进行初始化赋值9个数据:
intarr[]={1,2,3,4,5,6,7,8,9};
intlength=0;
//核算数组中数据长度:
//一切数据的字节数除以一个数据的字节数即为数据的个数:
length=sizeof(arr)/sizeof(int);
printf(“main_数组的长度为:%d\n”,length);
test(arr);
return0;
}
履行成果:
代码分析:
当将数组作为实参传递到另一个函数中时,另一个函数的形参相当于一个指针变量,因为将数组的名作为实参时,便是将数字的首地址作为实参,所以在test函数中输出的sizeof(arr)其实得到的是一个整型数组的长度(所占的字节数),所以成果是8,再用其除以int所占的字节数(4),成果便是2.
(这样是得不到精确的数组的长度的,主张的操作是在界说数组的函数中核算数组的长度,在以实参的形式传递出去,这样其他的函数变可以获得数组的长度)

未经允许不得转载:IT技术网站 » 数组长度(C函数怎么计算数组长度)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载