在c++中对数组应用sizeof得到的是数组的长度,对指针应用得到的是指针的长度。 求解释?

顺便问一下,C++中的长度单位是什么,除用程序测出长度外,有没有其他方法,比如人计算。... 顺便问一下,C++中的长度单位是什么,除用程序测出长度外,有没有其他方法,比如人计算。 展开
 我来答
百度网友1fc36d4
推荐于2016-06-16 · TA获得超过3131个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1833万
展开全部
数组int a[4]; sizeof(a)=4*4=16字节 (int为4个字节)
int *p=a; sizeof(p)=4字节
对数组应用sizeof,可以得到整个数组分配的字节数(存储全部数据占用的内存字节数)
对指针应用sizeof,只是得到分配给用来存储一个地址值的指针所用的字节数,即4个字节。
(上面都是在32位编译系统)

C++中sizeof得到的是字节数,也就是你所说的“长度单位”

求大小,可以手动计算,需要知道数据类型,是否有字节对齐(编译器选项,也可代码控制和切换)。我以前做过统计结构体大小的小程序,同时计算每个成员变量的相对地址。
Jacke_159
2012-07-25 · TA获得超过196个赞
知道小有建树答主
回答量:128
采纳率:100%
帮助的人:107万
展开全部
sizeof()求得实际是分配的内存空间, 对数组sizeof其实不是他的长度,只有当数组是字符数组的时候才是,因为32位下,每个字符占一个字节长度,如果是整型数组sizeof的结果是 sizeof(int)* 数组长度, 至于指针, 他是一个指向变量的地址,本是在32位机器下占用4个字节长度。 c++的长度单位是字节。 当然除了用函数计算长度外, 当然可以人工计算,但是人工计算不一定正确, 不确定是多少为机器, 比如int ar[5]; 32位下人工计算是20. 但是机器计算比较好, sizeof(int) * 5 = 20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-25
展开全部
因为指针存在的是它指向的地址。。。所以对指针SIZEOF,得到的其实是这个地址的长度,不同机器可能同一程序可能得到不同长度。
SIZEOF数组得到的是数组的长度,就是数组里面元素的个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Perfect小炒肉
2012-07-25 · 超过61用户采纳过TA的回答
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:47.5万
展开全部
楼上回答不错,C++长度指的是变量,数组,指针等在内存中占用的字节数,c++长度可以手工计算,只需根据相就变量类型来推广算,常见的数据类型如 short int ,int,long int,float,double等等,这些分别占用相应字节数,计算机位数不同,占用字节数也不大相同,如上的占用字节数一般是
2,2,4,4,8。
比如定义:float a[5],则可计算:4*5=20字节,跟sizeof得到的相同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yeunix
2012-07-25 · 超过23用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:57万
展开全部
路过,补充一下
在32位的系统里
sizeof(int)=4字节
sizeof(long)=4字节

在64位的系统里
sizeof(int)=4字节
sizeof(long)=8字节,已在AIX上验证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式