c语言怎么获取数组的长度

c语言怎么获取数组的长度,第1张

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。

因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。

数组特点:

数组是相同数据类型的元素的集合。

数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。

数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。

对于VB的数组,表示数组元素时应注意:

下标要紧跟在数组名后,而且用圆括号括起来(不能用其他括号)。

下标可以是常量,变量,或表达式,但其值必须是整数(如果是小数将四舍五入为整数)。

下标必须为一段连续的整数,其最小值成为下界,其最大值成为上界。不加说明时下界值默认为1。

这个和 *** 作系统有关,一般int的长度都会采用机器字长,比如win32系统,int占4字节,32位;

如果是64位主机,int占64位,但这不是一定的,还要看编译器类型等因素。

在C语言中,double、long、unsigned、int、char类型数据所占字节数和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):

sizeof(short int)<=sizeof(int)

sizeof(int)<=sizeof(long int)

short int至少应为16位(2字节)

long int至少应为32位。 unsigned 是无符号的意思。

例如:

16位编译器

char :1个字节

char(即指针变量): 2个字节

short int : 2个字节

int: 2个字节

unsigned int : 2个字节

float: 4个字节

double: 8个字节

long: 4个字节

long long: 8个字节

unsigned long: 4个字节

32位编译器

char :1个字节

char(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)

short int : 2个字节

int: 4个字节

unsigned int : 4个字节

float: 4个字节

double: 8个字节

long: 4个字节

long long: 8个字节

unsigned long: 4个字节

64位编译器

char :1个字节

char(即指针变量): 8个字节

short int : 2个字节

int: 4个字节

unsigned int : 4个字节

float: 4个字节

double: 8个字节

long: 8个字节

long long: 8个字节

unsigned long: 8个字节

数组有固定的length属性,通过length就可以得知其长度。

int lengthOfArray(Object[] a) {

    return alength;

}

C语言中字符串有一个结束符'\0',一个正常的字符串的最后一个字符都是'\0',在你定义一个常量字符串时就自动帮你加上去了,比如"abc"其实有4个字符{'a', 'b', 'c', '\0'},最后一个'\0'表示字符串到这就结束了,以防止内存读取越界,同时也以此来计算字符串长度,而不是再传一个int参数表示字符串的长度。因此a在内存中长度为6,但由于最后一个字符'\0'只是结束符,所有一般说长度时会忽略掉最后一个字符

stringh中提供了strlen函数可以方便地计算字符串的长度,不过注意strlen返回值的类型为size_t,x64下定义为uint64_t,x86下为uint32_t,所以记得进行类型转换

第一种:调用C库函数strlen(头文件<stringh>)

#include <stdioh>

#include <stringh>

int main(int argc, char argv[])

{

char a = "\x12\x00\x11\x00\x00";

printf("%d\r\n", (int)strlen(a));

return 0;

}

第二种:手动计算长度

#include <stdioh>

int main(int argc, char argv[])

{

char a = "\x12\x00\x11\x00\x00";

char p = a;

while ('\0' != p)

{

p++;

}

printf("%d\r\n", (int)(p - a));

return 0;

}

1、打开Eclipse,新建项目,在项目src目录新建一个类,为了更好 *** 作数组,Java为数组提供length属性,用来获取数组长度,语法格式如下。

2、创建整形类型变量array,初始化赋值为{1, 2, 3, 4, 5},创建整形类型变量len,用变量array获取变量len的数组长度。

3、用下标来引用数组元素和获取数组长度,可以用循环语句来访问数组所有元素。

4、从前到后访问数组元素是数组的遍历,也是迭代。

5、在Java SE 50平台,增加了增强型for循环的语法,称为for-each循环,用来遍历数组更为合适。

6、创建整形类型数组,初始化赋值,用for-each循环,用变量aa访问数组array中的每个元素的值。

private int GetNum(int Num)

{

string strResult = "";

if ( Num > 0)

{

for ( int i=1; i<= NumLength; i++)

{

strResult += Num[NumLength-i]Tostring();

}

}

return strResult;

}

以上就是关于c语言怎么获取数组的长度全部的内容,包括:c语言怎么获取数组的长度、c语言计算int型数据的字长,求大神详细解释、java中如何获取一个未知类型的数组的长度,这个数组可能是int,string,boolean.....的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9554059.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存