关于数组和sizeof 的问题, 一下讨论正确吗?请大家给审查一下

kaitree 2003-12-30 07:29:54
考考你:myArray为数组名,当你用sizeof(myArray)时,返回的是整个数组的size,这么说数组的第一个元素的地址里头,也就是"myArray"里头不但储存了第一个元素的值,同时也储存了数组元素的个数?

tiyer says:
sizeof 是一个宏,不是函数
Kai <TInt32> says:
反正他能根据数组第一个元素地址判断数组大小,所命第一个元素肯定存了数组大小的信息
Kai <TInt32> says:
起码里头存了,比如数组元素的个数
tiyer says:
不是啊,sizeof是一个宏,编译时候就直接得到的
tiyer says:
不用存的
tiyer says:
这个是由编译器编译时候决定的
tiyer says:
像 sizeof(int) ,你说地址在什么地方啊?
Kai <TInt32> says:
那倒是
Kai <TInt32> says:
我就是感兴趣数组size的信息是存在那里的呢?
tiyer says:
赫赫,这个啊
tiyer says:
你得问编译器了
Kai <TInt32> says:
可能是当你初始化一个数组的时候,那个size可能被存在什么地方乐吧
Kai <TInt32> says:
我觉得还是和数组的第一个元素有关系
tiyer says:
没有的,编译时候就已经替换了
Kai <TInt32> says:
否则为什么通过第一个元素的地址就能得到size呢
Kai <TInt32> says:
从什么替换成什么呢
tiyer says:
在编译时候,编译器会自动分析数组的定义
tiyer says:
现在编译器不是那么傻的
Kai <TInt32> says:
那么你的意思是,他会通过数组第一个元素的地址找到数组的定义信息对吗?
...全文
22 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharkhuang 2003-12-31
  • 打赏
  • 举报
回复
编译器知道的!
zhangyan_qd 2003-12-30
  • 打赏
  • 举报
回复
比较一下
int array[6];
int* pointer;
sizeof(array) //== 6 * 4
sizeof(pointer) //== 4
sizeof是个编译期运算符,由编译器自动进行运算。
allen_wang 2003-12-30
  • 打赏
  • 举报
回复
tiyer说的是对的,不过sizeof也不是宏,是一个运算符。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧