为了账号安全,请及时绑定邮箱和手机立即绑定

求大神,指针的一些具体介绍

求大神,指针的一些具体介绍

C++
吴明份 2016-09-01 23:36:54
我是大二的学生,只学过C#,现在在接触Java,上课老师提到了指针,而我不懂。我搜索指针,发现它跟C++关系挺近,但是没学过,看不懂大神们可以简单呢介绍一下么?? 谢谢
查看完整描述

2 回答

?
onemoo

TA贡献883条经验 获得超454个赞

C和C++中都有指针。指针中保存的就是内存地址。

比如:

int a = 10; // 定义一个整型变量a,其初值为10
int *p = &a; // 定义一个可保存int类型地址的指针p,且令p指向变量a的地址(&a是取a的地址)

通常 p 被叫做指向a的指针。而通过指针可以操作被指向的对象:

在使用指针(而不是定义指针)时, *p 就代表其所指的对象,这被称为解引用(dereference)指针。 这样 *p = 20; 就是向p所指的对象赋值20,相当于写下 a = 20。

指针可以用在非常多的地方,举一例:你要知道C/C++中的普通类型都是值类型(value),变量之间相互赋值就是将变量中的内容完整地拷贝过来。 当变量很大(拷贝成本很高)时,程序中传递变量值就是一件很低效的事,那么只传递变量的地址(就是其指针)就能消除很多拷贝成本。

总之,指针的存在使得C/C++可以直接操作内存,而在语义上,让C/C++拥有了引用(reference)语义


Java中虽然没有“指针”类型,但你可以认为Java中到处都存在“指针”:本质上,Java中的变量都是引用语义(从语义角度,Java并没有真正的值类型),而指针在语义层面就代表了引用。

Java是更纯粹的面向对象语言,仅保留了引用语义;而C/C++这种更偏向底层的语言,既拥有值语义还拥有引用语义,指针就是引用语义的具体形式。


我猜,你们老师提到指针就是要表达这个意思。

查看完整回答
3 反对 回复 2016-09-02
  • 吴明份
    吴明份
    谢谢您的帮助。
  • 吴明份
    吴明份
    在Java中能不能举个例子,说明Java中的变量都是引用语义。 我知道了什么是指针啦,但是对您所说在Java中的,还是不是太明白。 麻烦您啦,
  • 2 回答
  • 1 关注
  • 1251 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信