sizeof数组名多大(C语言sizeof数组名)
本文目录
C语言sizeof数组名
数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。这种误解的根源在于国内某著名的C程序设计教程(出版量最多的那本破书)。 数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;指向数组的指针则是另外一种变量类型,仅仅意味着数组的存放地址! sizeof(a)为什么等于40呢,因为数组这种结构保存了数组的大小,有的书说这个值保存在数组首地址前面的内存中(这一点,我没验证)。最简单的方法你就记着,数组名不是普通的指针。
详细讲一下 数组大小=sizeof(数组名)/sizeof(数组类型)
sizeof(数组名)这个是数组的内存空间的大小,sizeof(数组类型)这个是这个数据类型的大小,两者相除不就是一共有多少个int类型的数据么,不就是数组的大小了么
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()结果判断有误。)***隐藏网址***====
更多文章:
format在数据库中的用法(SQL数据库中怎么将时间格式转换到年和月)
2024年7月9日 16:10
service是可数名词还是不可数名词(SERVICE什么时候是可数,什么时候是不可数)
2024年10月9日 08:00
primary key是什么意思(primarykey是什么意思)
2024年7月23日 20:36
springboot线程池配置(SpringBoot使用线程池)
2024年7月3日 11:55
c++protected继承(CPP公有继承、保护继承以及私有继承)
2024年10月10日 02:45
中国疫情最新数据(2022年厦门新冠肺炎疫情最新数据年厦门新冠肺炎疫情最新数据图)
2024年7月10日 05:46
printf string(C++中如何用printf输出一个字符串)
2024年7月24日 17:01
八大排序算法java实现(用Java实现几种常见的排序算法)
2024年7月24日 01:26
js格式化json数据显示在页面上(如何在js里面处理后台传来的json,并显示在页面上)
2024年9月7日 22:25