我是大二的学生,只学过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++这种更偏向底层的语言,既拥有值语义还拥有引用语义,指针就是引用语义的具体形式。
我猜,你们老师提到指针就是要表达这个意思。
- 2 回答
- 1 关注
- 1251 浏览
添加回答
举报
0/150
提交
取消