为了账号安全,请及时绑定邮箱和手机立即绑定

sizeof是如何计算数组大小的

sizeof是如何计算数组大小的

慕码人8056858 2019-04-19 16:29:57
char*ptr;chararr[10];sizeof(ptr)=4;sizeof(arr)=10;请问是如何计算数组大小的?这里只是把地址传给sizeof啊
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

严格讲,
sizeof(arr)=10;这里只是把地址传给sizeof啊
你这句话是错误的,你传的是数组名,数组名不等价于地址。
编译器用数组名标记数组的属性,比如具有确定数量的元素。而你说的地址,也就是指针,只是一个标量值。
只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量。而只有以下两种情况,才不被当做指针常量:
sizeof(数组名):返回数组长度(所占的字节数,不是数组元素个数),而不是指向数组的指针的长度。
&数组名:产生一个指向数组的指针,而不是一个指向某个指针常量的指针。
以上内容来源:《C和指针》P141~142
                            
查看完整回答
反对 回复 2019-04-19
?
浮云间

TA贡献1829条经验 获得超4个赞

sizeof不是函数,而是编译器提供的操作符,由编译器计算并返回一个数据结构的大小。
在这里,编译器知道arr的大小(否则它怎么为其分配内存呢?),所以能够返回正确的结果10。
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 2435 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信