关于C语言中数组地址的问题 求高手解
假设intaddr[5]为一个数组那么&addr[3]-addr表示什么意思,它的值是多少?假设&addr[3]的地址为0x8000,addr的地址为0x7000,为什么...
假设int addr[5]为一个数组 那么&addr[3]-addr 表示什么意思,它的值是多少?
假设 &addr[3]的地址为0x8000,addr的地址为0x7000,为什么结果不是 0x1000.求高手解 展开
假设 &addr[3]的地址为0x8000,addr的地址为0x7000,为什么结果不是 0x1000.求高手解 展开
3个回答
展开全部
意思是数组第三个成员的地址减去数组首地址,值为3
更多追问追答
追问
假设 &addr[3]的地址为0x8000,addr的地址为0x7000,为什么结果不是 0x1000.求高手解
追答
如果addr的地址为0x7000
那么addr[3]的地址应为0x700c,而不是0x8000
如果addr的类型为char,那么addr[3]的地址为0x7003
如果addr的类型为short,那么addr[3]的地址为0x7006
这个与数据类型有关
展开全部
一楼朋友的回答是正确的,至于你问的为什么结果不是你想的结果,这是因为你的假设是不成立的。结果为从addr 到 &addr[3]之间存储单元的个数即 3,因为每个单元都是 int 型的,所以具体地址的差值为3X4 = 12个字节。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
&addr[3]代表这个数组中第三个元素的地址,具体值,要有系统分配。
追问
&addr[3]-addr的地址值相减怎么也不会是3呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询