本文目录
- C程中如何计算数组(一维及二维)占内存空间的大小
- sizeof以数组名为参数
- C语言sizeof数组名
- 详细讲一下 数组大小=sizeof(数组名)/sizeof(数组类型)
- 详细讲一下 数组大小=sizeof(数组名)/sizeof(数组类型)
C程中如何计算数组(一维及二维)占内存空间的大小
用sizeof a/sizeof a可以求出数组里面元素的个数。将整个指针数组占用的字节数除以数组中第一个元素占用的字节数,由于数组中各个元素占用相同的存储空间,所以结果就是数组元素的个数。
sizeof以数组名为参数
1L正确,2L错误。测试代码:#include 《stdio.h》int main(){ char str = "world", *pstr = "world"; printf("%d %d",sizeof(str),sizeof(pstr)); getchar(); return 0;}Dev-C++下编译通过,运行结果6 4。----解释:char str = "world";这里初始化不限定长度,而"world"包含结束符’\0’后为6个字符,因此初始化str的长度是6;又因为char数组中每个元素(char变量)占用1个字节的空间,所以str数组的大小是6字节。char *pstr = "world";由于pstr是指针,无论是否指向字符串,指向什么字符串,sizeof(pstr)等于sizeof(int),32位平台上等于4。造成差别的原因:这里char str,因此返回整个数组的大小(这个大小在之前的数组定义中已经确定了);而pstr只是个指针,sizeof(pstr)只能返回指针本身占用的字节数而不能确定为它指向的内容分配的空间的大小。(注意,地址常量绝不是指针,类型不同!虽然在函数的参数传递过程中,地址常量可以退化成对应的指针。这里LZ和2L显然由于这个错误理解导致对数组的sizeof()结果判断有误。)***隐藏网址***====
C语言sizeof数组名
数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。这种误解的根源在于国内某著名的C程序设计教程(出版量最多的那本破书)。 数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;指向数组的指针则是另外一种变量类型,仅仅意味着数组的存放地址! sizeof(a)为什么等于40呢,因为数组这种结构保存了数组的大小,有的书说这个值保存在数组首地址前面的内存中(这一点,我没验证)。最简单的方法你就记着,数组名不是普通的指针。
详细讲一下 数组大小=sizeof(数组名)/sizeof(数组类型)
sizeof(数组名)这个是数组的内存空间的大小,sizeof(数组类型)这个是这个数据类型的大小,两者相除不就是一共有多少个int类型的数据么,不就是数组的大小了么
详细讲一下 数组大小=sizeof(数组名)/sizeof(数组类型)
array是数组指针,sizeof(array)返回指针指向的内存空间的长度sizeof(int)是每个int类型占的内存空间sizeof(array)/size(int)就是求出array里有多少个int类型数据,也就是数组的长度