啊哈磊_编程从这里起步

标题: 数组首地址的存储位置在哪里? [打印本页]

作者: fengzhenging    时间: 2013-9-30 00:26
标题: 数组首地址的存储位置在哪里?
假设 inta[]={1,2,3};那么a作为首个元素的地址,它会存储在哪?除了数组的3*4=12个字节外,还会另外开辟内存存储吗?

作者: rosynirvana    时间: 2013-9-30 00:26
velvetblue 发表于 2013-10-1 20:02
数组名字a,及对应的首地址,当然需要内存空间存储。不过一般不用关心它存在哪个位置。
其实每个变量的名字 ...

首先,不是所有地址都需要存储的,因为编译器会优化,某些变量的值会直接写成text段中的立即数
然后,变量名是(可以)不存储的,因为CPU根本不理解什么叫变量,所有变量都会被替换成地址
但是ELF可执行文件存储extern scope的符号名,这对正常运行没有影响,只是为了汇编级的debug使用
作者: rosynirvana    时间: 2013-9-30 00:53
1.a 不是首元素的地址,只是在某些语义下编译器将其转化为首地址

2.不会
作者: velvetblue    时间: 2013-10-1 20:02
数组名字a,及对应的首地址,当然需要内存空间存储。不过一般不用关心它存在哪个位置。
其实每个变量的名字,及其对应的首地址,都是需存储的,变量自身占用的内存,是另外一件事。

作者: 4399APPLE    时间: 2013-10-7 21:08
数组名字a,及对应的首地址,当然需要内存空间存储。不过一般不用关心它存在哪个位置。
其实每个变量的名字,及其对应的首地址,都是需存储的,变量自身占用的内存,是另外一件事。




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2