猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
sizeof是如何计算数组大小的
char*ptr;chararr[10];sizeof(ptr)=4;sizeof(arr)=10;请问是如何计算数组大小的?这里只是把地址传给sizeof啊
慕码人8056858
浏览 2436
回答 2
2回答
牧羊人nacy
严格讲,sizeof(arr)=10;这里只是把地址传给sizeof啊你这句话是错误的,你传的是数组名,数组名不等价于地址。编译器用数组名标记数组的属性,比如具有确定数量的元素。而你说的地址,也就是指针,只是一个标量值。只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量。而只有以下两种情况,才不被当做指针常量:sizeof(数组名):返回数组长度(所占的字节数,不是数组元素个数),而不是指向数组的指针的长度。&数组名:产生一个指向数组的指针,而不是一个指向某个指针常量的指针。以上内容来源:《C和指针》P141~142
0
0
0
浮云间
sizeof不是函数,而是编译器提供的操作符,由编译器计算并返回一个数据结构的大小。在这里,编译器知道arr的大小(否则它怎么为其分配内存呢?),所以能够返回正确的结果10。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续