开发者社区> 问答> 正文

sizeof是如何计算数组大小的

char *ptr;
char arr[10];
sizeof(ptr) =4;
sizeof(arr) =10;请问是如何计算数组大小的?这里只是把地址传给sizeof啊

展开
收起
a123456678 2016-06-08 20:54:55 2793 0
1 条回答
写回答
取消 提交回答
  • 你这句话是错误的,你传的是数组名,数组名不等价于地址。

    编译器用数组名标记数组的属性,比如具有确定数量的元素。
    而你说的地址,也就是指针,只是一个标量值。

    只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量。而只有以下两种情况,才不被当做指针常量:

    sizeof(数组名):返回数组长度(所占的字节数,不是数组元素个数),而不是指向数组的指针的长度。
    &数组名:产生一个指向数组的指针,而不是一个指向某个指针常量的指针。
    以上内容来源:《C和指针》P141~142

    2019-07-17 19:32:44
    赞同 1 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载