首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C- charArray总是和&charArray一样吗?

C- charArray总是和&charArray一样吗?
EN

Stack Overflow用户
提问于 2016-06-05 20:18:51
回答 1查看 126关注 0票数 4

我在读一篇关于全程序优化的文章。链接时间代码生成部分的最后一段说,对分配到堆栈上的数组进行归零可能不会产生相同的效果,这取决于它是如何归零的:

启动整个程序优化确实发现了一些有未定义行为的错误。如果没有WPO,这些就没有崩溃。对于WPO,他们做到了。在一种情况下,成员函数调用是通过指向未初始化内存的指针进行的。在其他几种情况下,假设堆栈上的数组与它们自己的地址相同。,即假设memset(&charArray,0,sizeof(charArray))具有与memset相同的效果(charArray,0,sizeof(charArray))。这不是标准所保证的,似乎在WPO.下发生了变化。

我想如果我这么做的话,char foo[1] foo将永远是== to &foo。有人能解释一下这里发生了什么吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-05 20:23:26

foo是一个数组,在表达式中,foo将转换为指向其第一个元素的指针,除非是一元&sizeof运算符的操作数。因此,在这种情况下,foo == &foo[0]&foo是数组foo的地址,而不是foo的第一个元素的地址。

虽然foo&foo的值是等价的,但它们的类型不同。foo衰变后为char *型,&foochar (*)[1]型。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37646367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档