黑马程序员技术交流社区

标题: int a=2; a是怎么存储的呢?还是内存地址的一个映射? [打印本页]

作者: 蒲公英    时间: 2015-1-5 17:36
标题: int a=2; a是怎么存储的呢?还是内存地址的一个映射?
    刚开始学习整形时就有这样的疑惑,要读取a的值,就必须知道a对应的内存地址,若a映射(存储)着内存地址,那它和引用不就没有区别了吗?求教呀...{:2_34:}
    如c++中的代码(java无法读取基本类型的地址):

#include "stdafx.h"
#include "iostream"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
        int a = 2;
        int* pa = &a;
        cout << "a的值是:" << a << endl;
        cout << "a变量的地址是:" << &a << endl;

        cout << "pa的值是:" << pa << endl;
        cout << "pa指针的地址是:"<<&pa << endl;
        return 0;
}
这就更让我感觉,a是指向数值2的内存的。存储的也是地址,晕呀!
作者: kerner    时间: 2015-1-5 17:59
int是基本类型,所以a存储的是a的值,但是像引用类型的话,存储的就是对象的地址。这是C\C++中的。
java中也适用,一般变量存储值,引用变量是存储对象的地址,和C++中的引用&几乎无区别,其原理和指针类似。

卧槽,,这是在学习JAVA吗?这明明是是在学习C/C++啊!!!
作者: '丫头片子'    时间: 2015-1-5 19:36
C++的代码完全看不懂啊
作者: hello_csu    时间: 2015-1-5 20:58
JVM虚拟机是可以处理基本数据类型的。如果为局部变量,其就存放在栈中的。如果是对象中的变量,当然放在堆中。
作者: 蒲公英    时间: 2015-1-5 21:12
kerner 发表于 2015-1-5 17:59
int是基本类型,所以a存储的是a的值,但是像引用类型的话,存储的就是对象的地址。这是C\C++中的。
java中 ...

( ⊙ o ⊙ )啊!
作者: 蒲公英    时间: 2015-1-5 21:13
'丫头片子' 发表于 2015-1-5 19:36
C++的代码完全看不懂啊

你直接学的Java?
作者: 蒲公英    时间: 2015-1-5 21:17
kerner 发表于 2015-1-5 17:59
int是基本类型,所以a存储的是a的值,但是像引用类型的话,存储的就是对象的地址。这是C\C++中的。
java中 ...

它们存储的都是值,一个是数值,另一个是地址。a指向的是数值2,引用变量a指的是2的地址。
作者: iblackhorse    时间: 2015-1-5 21:19
。。亲,我不是学的c,抱歉哦。走有人给你答案的
作者: kerner    时间: 2015-1-5 21:30
本帖最后由 kerner 于 2015-1-5 21:32 编辑
蒲公英 发表于 2015-1-5 21:17
它们存储的都是值,一个是数值,另一个是地址。a指向的是数值2,引用变量a指的是2的地址。 ...

2不存在地址一说,因为他是常量,也就是编译时就确定了。所以a存储的就是2,不是2的地址。只有变量才有地址一说。不要纠结这些东西,如果需要深入搞虚拟机底层才需要了解吧。
作者: yedaiwang    时间: 2015-1-5 21:34
这是Java吗啊

作者: 新鲜感    时间: 2015-1-5 21:34
怎么个情况
作者: 蒲公英    时间: 2015-1-5 21:37
yedaiwang 发表于 2015-1-5 21:34
这是Java吗啊

我想在Java中输出基本类型变量的地址,没找到方法,只能用c++表示了,哈哈
作者: 蒲公英    时间: 2015-1-5 21:38
iblackhorse 发表于 2015-1-5 21:19
。。亲,我不是学的c,抱歉哦。走有人给你答案的

{:3_53:}..........
作者: iblackhorse    时间: 2015-1-5 22:20
蒲公英 发表于 2015-1-5 21:38
..........

哥们学习多久了?我才刚开始学习。
作者: 探寻者    时间: 2015-1-5 23:34
地址能不能看到还真不知道,但是基本数据类型跟引用数据类型时有区别的,最直接的是参数传值上,基本数据类型改变形参,担实参不变,引用数据类型改变就会 改变实参的值。
作者: 蒲公英    时间: 2015-1-6 10:04
iblackhorse 发表于 2015-1-5 22:20
哥们学习多久了?我才刚开始学习。

三个多月了,以前学过c,c++




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2