鱼C论坛

 找回密码
 立即注册
查看: 1862|回复: 5

两个基础小问题

[复制链接]
发表于 2014-7-14 11:23:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-14 11:44:31 | 显示全部楼层
第一 不会
第二 有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-14 12:02:53 | 显示全部楼层
第一,申明一个变量后,int i,他的地址会变吗??
如果是局部变量,或是形参应该地址会变的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-14 12:17:08 | 显示全部楼层
本帖最后由 oggplay 于 2014-7-14 18:15 编辑

第一:不会,局部变量会提前消失是可以的。
第二:指针比如int *q,例如:
int i=3;
int *q =&i;
解释看6楼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢了!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-14 18:14:47 | 显示全部楼层
本帖最后由 oggplay 于 2014-7-14 18:39 编辑

就上个我举得例子,经实测:系统是分配空间的,比如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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 16:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表