a[]为数组,为什么a和&a值一样

swlyzju swlyzju 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
今天看到一本书说
a为数组首元素的首地址
&a为数组的首地址
为什么在编译器中两个值一样?

另1:
int a[5];
sizeof(&a)在VC6上输出为20,这是编译器错误吗?

另2:书上说:
如果文件1中定义 char a[] = "abc";
文件2中定义 extern char *a;
然后文件2中a指向的内存区域就存放了97("a"),然后用97作为数组地址去查找就出错.
而如果文件1中定义 char *a = "abc";
文件2中定义 extern char a[];
然后文件2中用数组a[]访问内容时,里面的内容为指针a中保存的"abc"的地址(如0x0000ff00),就会出错.

这个怎么理解?
我用char a[] = "abc";
char* p = a;
输出完全没问题啊!
用Watch窗口看了a的值跟p是一样的,里面都是保存了地址(如0x0000ff00)?
...全文

相关推荐

评论 33
收藏 已收藏
分享
返回顶部
swlyzju
C++ 语言 65,214 成员 250,514 内容