两个基础小问题
第一,申明一个变量后,int i,他的地址会变吗??第二,指针变量有地址吗?
第一 不会
第二 有 第一,申明一个变量后,int i,他的地址会变吗??
如果是局部变量,或是形参应该地址会变的 本帖最后由 oggplay 于 2014-7-14 18:15 编辑
第一:不会,局部变量会提前消失是可以的。
第二:指针比如int *q,例如:
int i=3;
int *q =&i;解释看6楼
oggplay 发表于 2014-7-14 12:17
第一:不会,局部变量会提前消失是可以的。
第二:指针比如int *q,系统不会为q分配地址。例如:
谢谢了!! 本帖最后由 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]