A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨华东 中级黑马   /  2012-10-25 12:51  /  1335 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们都知道栈内存存储的东西是共享的。。。
那么函数中定义了两个变量:
int a=90;
int b=90;
请问在栈内存中开辟了几个空间用于存储a ,b ?
求解释,元芳在此感谢

int a=90;
int b=99;
这两个又有啥区别呢??开辟一个空间还是两个空间,求解释。。。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
一步一步来,按顺序编译,int a = 90;编译器会先创建一个a的引用,完了查找有没有90这个值,如果没有就存储进来,并另a指向90;完了就是int b =90;建立一个b的引用,查找有没有90这个值,有的话直接就指向90; 如果在定义int b = 99,那么他会寻找有没有事99的值,没有的话存储进来,并另b指向99.这里的共享和对象之间的引用里的共享不一样,这个一个变量改变值的话,他会在创建这个值并且指向,对原来值没有影响。对象间引用则不同

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
程杰 发表于 2012-10-25 13:06
一步一步来,按顺序编译,int a = 90;编译器会先创建一个a的引用,完了查找有没有90这个值,如果没有就存储 ...

精辟啊     兄弟
回复 使用道具 举报
int a=90;int b=90;
就这个而言他是在栈内存中,首先int  a =90进来。查看是否有90,如果没有。开辟空间。如果有,指向这个空间,并不会再开辟。
所以这里只开辟了一个空间。
int a=90;int b=99;
这个则会开辟俩个空间。原理和上面一样。


回复 使用道具 举报
90 99 这些数据不是存在栈内存的。
引用存放在栈内存, 如 a , b 这些。
常量都存放在数据区的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马