3楼+1,但是不全都是之指针。
现在的语言不太喜欢把指针称之为“指针”,而喜欢称之为“引用”。当年java就把自己的“没有指针”作为重点宣传,因为程序员害怕指针。而事实上java自己也有指针,只是换了个名字,叫做引用。
当你 new 一个对象实例的时候,会在堆上分配一个空间,同时返回一个对象的引用。比如 Object* object = new Objec() //c艹写法
,这个object 的类型实际上是一个对象引用,事实上也是指针。一些具有垃圾回收的语言,当这个对象不再被引用的时候,这个对象的内存会被回收如java,js等。另一些不具有垃圾回收的语言,不如c艹,需要手动delete回收对象。
而且这种引用类型直接用类似 object2 = object1
这样的赋值方式是不会复制一个新对象的,而是直接把这个对象的引用复制给新的引用类型。也就是说object2 = object1
以后,object2 和 object1 是指向同一个对象的。
在这些语言里,你直接把引用当成指针用就行了。比如链表啊,树啊啥的需要用指针的数据结构,在c语言实现是用 struct 和 指针 的实现方式。如果用面对对象的实现方式,那就变成了 对象 和 引用。其实你在写的过程中把struct换成了class,malloc换成了new,就差不多了能够实现了。
本人技术渣渣,如果有不对的地方,请轻喷。