值类型变量和引用类型变量的区别
2017-12-02 11:25
246 查看
主要区别在于 系统在内存空间中为两者分配存储空间的方式不同。
由系统管理栈空间的所有操作,包括进栈和出栈。当一个数据出栈后,其所分配到的存储空间由系统自动回收。
堆空间由CLR负责管理。
事实上,当定义一个变量,不论是值类型变量还是引用类型变量,并初始化时,系统都是在栈空间中为他们分配对应的存储空间。所不同的是,引用类型变量所指向的对象的存储空间是在堆空间分配的。
1、内存空间
内存空间分为栈空间和堆空间。值类型数据的存储空间在栈空间中分配,引用类型数据则在堆空间分配。由系统管理栈空间的所有操作,包括进栈和出栈。当一个数据出栈后,其所分配到的存储空间由系统自动回收。
堆空间由CLR负责管理。
2、值类型变量
C#中的值类型变量和C/C++中的普通变量(非指针变量)相似。当定义一个值类型变量并初始化时,系统会在栈空间中为这个变量分配存储空间,并将值存放在存储空间中。3、引用类型变量
引用类型变量类似C/C++中的指针变量。例如 int *p,指针变量p存储的是某个整形变量的地址。而引用类型变量存储的则是某个对象的地址,而非变量或对象本身。事实上,当定义一个变量,不论是值类型变量还是引用类型变量,并初始化时,系统都是在栈空间中为他们分配对应的存储空间。所不同的是,引用类型变量所指向的对象的存储空间是在堆空间分配的。
相关文章推荐
- java中引用类型的变量和对象的区别
- 变量的引用类型和非引用类型的区别
- Java中的基本类型和引用类型变量的区别
- Java中的基本类型和引用类型变量的区别
- 66 Java final 修饰基本类型变量和引用类型变量的区别
- Java中的基本类型和引用类型变量的区别
- JAVA 对象定义、访问对象、基本类型和引用类型变量区别
- 变量的引用类型和非引用类型的区别
- 《final修饰基本类型变量和引用类型变量的区别》
- Java中的基本类型和引用类型变量的区别
- final修饰基本类型变量和引用变量区别
- 变量的引用类型和非引用类型的区别
- 变量,常量,引用类型,值类型,枚举类型, 值类型和引用类型的简单区别,类型转换,装箱与拆箱
- algo1-3.cpp 变量的引用类型和非引用类型的区别
- JS变量基本类型和引用类型的区别
- Java中的基本类型和引用类型变量的区别
- Java中的基本类型和引用类型变量的区别
- final修饰基本类型和引用类型变量的区别
- java final 与引用类型变量和基本类型区别
- Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义