指针简单的说就是一个指向对象的东西,对于大部分语言来说,都用引用和托管指针来代替它了。甚至 C++ 里也有引用。引用和指针最重要的区别,是是否可以为空,以及是否能修改指向的对象,引用一般是不能为空和改指对象的,因此像 Java 这样的语言里,其实到处是指针。
Object obj= new Object();
Object sec= obj;
sec = new Object();
如果你去仔细研究他们的行为,就回发现 obj, sec 都只是一个指向对象的东西,可以为空,也可以修改指向,所以它们其实都是指针,只是 Java 的教材里没这么教而已。
C/C++ 和其他语言不同的地方,是指针是可以“计算”的,实际上它的指针实现,就是实际的内存地址,因此它是可以随意修改,并且类型也能通过强转随便转,灵活性太大的后果,就是太容易误用,造成飞指针,导致程序崩溃。如果是早期的操作系统,或者程序运行的权限比较高(比如驱动),甚至可能改写操作系统本身,导致操作系统崩溃什么的。
因此,后期设计的语言,都刻意避免可以随意计算无控制的指针,而改用不能计算(类似 Java 里这种)的指针来替代,并且顺便在教材里改了名字,所以才让题主误以为其他语言没指针了。
最后,由于操作系统和高效率软件都必须要用到可计算指针,所有它们才大多用 C/C++ 来编写。