qtyj123 发表于 2014-7-14 11:23:40

两个基础小问题

第一,申明一个变量后,int i,他的地址会变吗??
第二,指针变量有地址吗?

牡丹花下死做鬼 发表于 2014-7-14 11:44:31

第一 不会
第二 有

ilyou2049 发表于 2014-7-14 12:02:53

第一,申明一个变量后,int i,他的地址会变吗??
如果是局部变量,或是形参应该地址会变的

oggplay 发表于 2014-7-14 12:17:08

本帖最后由 oggplay 于 2014-7-14 18:15 编辑

第一:不会,局部变量会提前消失是可以的。
第二:指针比如int *q,例如:
int i=3;
int *q =&i;解释看6楼

qtyj123 发表于 2014-7-14 12:42:03

oggplay 发表于 2014-7-14 12:17
第一:不会,局部变量会提前消失是可以的。
第二:指针比如int *q,系统不会为q分配地址。例如:



谢谢了!!

oggplay 发表于 2014-7-14 18:14:47

本帖最后由 oggplay 于 2014-7-14 18:39 编辑

qtyj123 发表于 2014-7-14 12:42
谢谢了!!
就上个我举得例子,经实测:系统是分配空间的,比如i的地址是0x7bfffff,那么编译器会把0x7bffffff存储到栈上留着备用。以下可以不看:
leaq -4(%rbp), %rcx#把i的地址放在rcx中
movq %rcx, -16(%rbp) #把i的地址存储到内存rbp-16的位置,这里就是q的值。*q就是i的值。
movl $3, -4(%rbp)    #把3存储到i的地址单元里,即i=3
页: [1]
查看完整版本: 两个基础小问题