通过计算输入数组的所占空间除以该类型所占空间 得到该数组长度。不知道哪一点有问题,向大神请教?(C语言中计算数组长度的方法是什么)

1881℃ OLGA

通过计算输入数组的所占空间除以该类型所占空间 得到该数组长度。不知道哪一点有问题,向大神请教?(C语言中计算数组长度的方法是什么)

C语言中计算数组长度的方法是什么

c语言中,定义数组后可以用sizeof命令获得数组的长度(可容纳元素个数)。

例如:

int data[4];

int length;

length=sizeof(data)/sizeof(data[0]); //数组占内存总空间,除以单个元素占内存空间大小

printf("length of data[4]=%d", length ); //输出length of data[4]=4

但是,通过传递数组名参数到子函数中,以获得数组长度是不可行的。

例如:

int getLength(int[] a)

{ int length;length=sizeof(a)/sizeof(a[0]); //这样是错误的,得到的结果永远是1

return length;

}

因为,a是函数参数,到了本函数中,a只是一个指针(地址,系统在本函数运行时,是不知道a所表示的地址有多大的数据存储空间,这里只是告诉函数:一个数据存储空间首地址),所以,sizoef(a)的结果是指针变量a占内存的大小,一般在32位机上是4个字节。a[0]是int类型,sizeof(a[0])也是4个字节,所以,结果永远是1。3、因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。

还要注意,在C语言中,整形数组和字符数组的大小是有区别的,整形数组大小:sizeof(数组名)/sizeof(数组类型)。字符数组大小:strlen(数组名)+1,1因为要加上'/0',所以再加1。

C语言中如何计算一个数组占内存多少空间?

C语言中数组的sizeof值等于数组所知占用的内存字节数。

C语言中有一个专门用于检测类型或变量或数组在内存中所占有的空间(字节数)的操作符sizeof,用sizeof可以直接检测出数组在内存占有的字节数。

语法规则是:sizeof(x); (识别没有歧义时也可写成sizeof x;)——其中x是类型名、变量道名或数组名等,返回x所占字节数(int型)。

扩展资料:

sizeof的使用规则:

1、基本数据类型的sizeof:

这里的基本数据类型指short、int、long、float、double这样的简单内置数据类型,由于它们都是和系统相关的,所以在不同的系统下取值回可能不同,这务必引起我们的注意,尽量不要在这方面给自己程序的移植造成麻烦。一般的,在32位编译环境中,sizeof(int)的取值为4。

2、指针变量的sizeof:

指针变量的sizeof值与指针所指的对象没有任何关系,答正是由于所有的指针变量所占内存大小相等,所以MFC消息处理函数使用两个参数WPARAM、LPARAM就能传递各种复杂的消息结构(使用指向结构体的指针)。

参考资料来源:百度百科-sizeof

c语言字符串数组所占内存长度

sizeof(a[5])是数组中第6个元素的长度,应该是1。但是你的数组长度为5,最后一个元素是a[4]哦! 要求整个数组的长度直接用数组名就好了,相当于直接把数组的首地址传给函数strlen, strlen(a)就是求得的整个数组占用的字节长度,而且应该为5而不是7。因为每个char类型的变量只占一个字节! 希望可以帮到你,不会的可以问我。希望采纳嘿嘿

C语言字符 数组长度和数组所占内存

a后面加个‘\0’,由于b是逐个赋值,而且最后元素不是'\0',

所以b后面没有'\0';

数组长度是指数组元素个数;

在a中有6个元素,

b中有5个;

TAG: 数组