sizeof求数组长度,sizeof可用来求数组长度不
sizeof求数组长度,sizeof可用来求数组长度不详细介绍
本文目录一览: sizeof可用来求数组长度不
sizeof可以用来求数组的长度,例如:int arr[] = {1, 3, 5, 6,7,8,8,2};printf("%d\n", sizeof(arr) / sizeof(int)); //sizeof(arr)得到这个数组所占的内存空间大小sizeof(int)是每个元素的大小,sizeof(arr)的结果等于32,因为每个int元素占4个字节,这个数组有8个元素。
可以例子:int array[] = {2, 3, 4, 5, 6};那么array数组的长度就是:sizeof(array)/sizeof(int);
通过sizeof可以计算出类型的长度,同样也可以计算出数组的长度,但是这具有一定的局限性。
以下是一段示例代码:
session 1: 计算出数组的长度
session 2: 通过函数计算出数组的长度
session 3: 通过函数计算出数组的长度
运行结果:
C语言,关于求数组长度的问题!
解答:第一,在main 函数中,a为一维数组,是个常指针,此时sizeof(a)就能够计算出来4*10 = 40,sizeof(int)是为4的
第二,在int Length中,你将a作为一个地址传入该函数里,这个arr只是一个指针变量而已,它的大小为4个字节,使用sizeof(arr)时只能得到4。
这个sizeof比较奇怪,你在主函数里定义 char *b = "helloworld";
如果使用sizeof(b)的话,也是算出来4,懂了吗,嘿嘿
sizeof(arr) 其中arr是指向数组a 的指针。指针占四个字节, int也是占四个字节。
如果想结果一样
可以如下处理:
char str[100];
strcpy(str, arr);
len=strlen(str);
你的Length(int *arr)函数,传过来的arr,是数组的指针,你用 sizeof(arr)实际上就是一个指针的占用的空间大小 ,32位机器上是4位,而int 也是占4位,所以就是 1 啦。所以一般在传数组的时候都要传数组的长度过去
Length中的sizeof(arr)是一个整形的指针的长度,也就是一个整形的长度,所以得出的就是1啊
很明显是不同的操作好吧,怎么看怎么不相同。
a 是 int [10]
arr 是 int *
哪里相同了?乱搞。
sizeof命令中,
一、如果参数是指针变量(无论什么类型的指针)其结果都是4
二、如果参数是是数组,会返回数组所占空间的大小,即:int a[n] ; sizeof(a)=n*sizeof(int) ;
三、如果参数是个变量类型,则会返回这个类型所占空间的大小。sizeof(char)=1 sizeof(int)=4 sizeof(double)=8 具体一个变量类型所占的空间大小与机器类型有关系,如32位机long占4字节,而64位机long占8字节。
c++ 求数组长度
方法:
使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上,在使用时都把它定义成一个宏。
比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中则可以使用模板技术定义一个函数。
比如:template
intgetArrayLen(T& array){return (sizeof(array) / sizeof(array[0]));}
这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。
基础语法
1、C语言数据类型
C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
2、常量与变量
常量其值不可改变,符号常量名通常用大写。
变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
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]=42、但是,通过传递数组名参数到子函数中,以获得数组长度是不可行的。
例如:
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、因此,获得数组长度,只能在数组定义所在的代码区中,采用以上方法,才可以达到效果。
整形数组大小:sizeof(数组名)/sizeof(数组类型)。
字符数组大小:strlen(数组名)+1,1因为要加上'/0',所以再加1.
调用strlen 函数即可
sizeof(a)/sizeof(a[0])
用 sizeof 可以获得数据类型或变量在内存中所占的字节数。同样,用 sizeof 也可以获得整个数组在内存中所占的字节数。因为数组中每个元素的类型都是一样的,在内存中所占的字节数都是相同的,所以总的字节数除以一个元素所占的字节数就是数组的长度。
比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补0)位移。例如,将11100011右移3比特,算术右移后成为11111100,逻辑右移则为00011100。
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。
C语言特点:
其一,广泛性。C语言的运算范围的大小直接决定了其优劣性。C语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。
其二,简洁性。9类控制语句和32个关键字是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的操作,提高其工作效率,同时还能够支持高级编程,避免了语言切换的繁琐。
php如何查询数组长度
php查询数组长度的方法:1、使用php函数“count()”来获取数组长度,其语法如“count($arr);”;2、通过“sizeof()”函数来计算数组长度,其语法如“sizeof($arr);”。推荐:《PHP视频教程》在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧。php如何获取数组的长度,使用php函数count(),或是sizeof()例如:$arr = Array('0','1','2','3','4'); echo count($arr);// 输出 5$arr = array('A','B','C');echo sizeof($arr);//输出3sizeof()和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0;两函数功能一样,手册上讲,sizeof()是函数count()的别名。
C语言,关于求数组长度的问题!
你的Length(int
*arr)函数,传过来的arr,是数组的指针,你用
sizeof(arr)实际上就是一个指针的占用的空间大小
,32位机器上是4位,而int
也是占4位,所以就是
1
啦。所以一般在传数组的时候都要传数组的长度过去
Length中的sizeof(arr)是一个整形的指针的长度,也就是一个整形的长度,所以得出的就是1啊
sizeof(arr)
其中arr是指向数组a
的指针。指针占四个字节,
int也是占四个字节。
如果想结果一样
可以如下处理:
char
str[100];
strcpy(str,
arr);
len=strlen(str);
解答:第一,在main
函数中,a为一维数组,是个常指针,此时sizeof(a)就能够计算出来4*10
=
40,sizeof(int)是为4的
第二,在int
Length中,你将a作为一个地址传入该函数里,这个arr只是一个指针变量而已,它的大小为4个字节,使用sizeof(arr)时只能得到4。
这个sizeof比较奇怪,你在主函数里定义
char
*b
=
"helloworld";
如果使用sizeof(b)的话,也是算出来4,懂了吗,嘿嘿
c语言数组长度函数
比如说是int类型的数组, 数组为 int arr[ ]={3,5,6,5,......}
计算数组中元素个数的方法为,求出总数组大小,除以每个元素的大小,就得出元素的个数。
个数= sizeof(arr) / sizeof(int)
注意: 这里的arr单独出现的话代表的是整个数组,不是首地址。
若想让它代表首地址, 用arr+0即可, 比如求首地址的大小, 其实就是指针的大小4,
sizeof(arr+0) 结果肯定是4. 不信你自己cout输出测试下。
同理,无论什么类型的数组,都用这种方法
sizeof(首指针) / sizeof(类型)
在c++中对数组应用sizeof得到的是数组的长度,对指针应用得到的是指针的长度。 求解释?
sizeof()求得实际是分配的内存空间, 对数组sizeof其实不是他的长度,只有当数组是字符数组的时候才是,因为32位下,每个字符占一个字节长度,如果是整型数组sizeof的结果是 sizeof(int)* 数组长度, 至于指针, 他是一个指向变量的地址,本是在32位机器下占用4个字节长度。 c++的长度单位是字节。 当然除了用函数计算长度外, 当然可以人工计算,但是人工计算不一定正确, 不确定是多少为机器, 比如int ar[5]; 32位下人工计算是20. 但是机器计算比较好, sizeof(int) * 5 = 20
因为指针存在的是它指向的地址。。。所以对指针SIZEOF,得到的其实是这个地址的长度,不同机器可能同一程序可能得到不同长度。
SIZEOF数组得到的是数组的长度,就是数组里面元素的个数
楼上回答不错,C++长度指的是变量,数组,指针等在内存中占用的字节数,c++长度可以手工计算,只需根据相就变量类型来推广算,常见的数据类型如 short int ,int,long int,float,double等等,这些分别占用相应字节数,计算机位数不同,占用字节数也不大相同,如上的占用字节数一般是
2,2,4,4,8。
比如定义:float a[5],则可计算:4*5=20字节,跟sizeof得到的相同
路过,补充一下
在32位的系统里
sizeof(int)=4字节
sizeof(long)=4字节
在64位的系统里
sizeof(int)=4字节
sizeof(long)=8字节,已在AIX上验证
数组int a[4]; sizeof(a)=4*4=16字节 (int为4个字节)
int *p=a; sizeof(p)=4字节
对数组应用sizeof,可以得到整个数组分配的字节数(存储全部数据占用的内存字节数)
对指针应用sizeof,只是得到分配给用来存储一个地址值的指针所用的字节数,即4个字节。
(上面都是在32位编译系统)
C++中sizeof得到的是字节数,也就是你所说的“长度单位”
求大小,可以手动计算,需要知道数据类型,是否有字节对齐(编译器选项,也可代码控制和切换)。我以前做过统计结构体大小的小程序,同时计算每个成员变量的相对地址。