D语言中的值类型,引用类型和函数传递方式

D语言和C#,java类似,是一门区分值类型和引用类型的语言。

概念和区分:

(注:没有找到权威的定义,维基百科没有,只有勉强链接到百度百科了)

  • 值类型:百度百科 , 说下个人理解:默认在栈中分配的,传递时默认(自定义赋值函数可以做其他实现)是占用的内存的copy的。
  • 引用类型:百度百科 ,说下个人理解:默认在堆中分配,使用的时候都是其引用,也就是其指针。所谓的赋值也就是引用(指针)更新。

D中的分类:

(注:非官方分类,个人区分,如有错误请指出)

值类型:

  • 基础类型:字符类型([u]byte,[d/w]char),数字类型([u]short,[u]int,[u]long,[u]cent,[i/c]float,[i/c]double,[i/c]real,),布尔类型(bool),空类型(void)
  • 结构
  • 指针(引用本质也可以理解为指针)
  • 静态数组
  • function 和 delegate

引用类型:

  • 类和接口
  • 动态数组(不单单一个元素指针,还有长度)