C#基础 [04] 存储和变量
一、栈和堆
在程序运行时,它的数据是存储在内存中的。而类型决定了一个数据项需要多大的内存、存储在什么地方以及如何存储。运行中的程序使用两个内存区域来存储数据——栈和堆。
1.栈
1).定义
栈是一个内存数组,是一个后进先出(LIFO,last-in first-out)的数据结构。程序在编译期间就已经分配好了它所需要的栈空间的大小。栈一般用于存储变量的值、当前程序的执行环境和传递个方法的参数。
2).特征
数据只能从栈顶插入和删除;把数据插入栈顶称为“入栈”(push);把数据从栈顶删除称为“出栈”(pop)。
2.堆
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象。与栈的存取方式不同,堆里的内存能够以任何顺序存入和移除。
二、变量
1.变量定义
变量是程序为内存空间取的一个名字,它表示程序执行时存储在内存中的数据。根据变量所在的位置,可以把变量分为以下四种:
1).本地变量:定义在方法中的变量,用于在方法的作用域保存临时数据。
2).参数:定义在方法的参数列表中的临时变量,用于从一个方法到另一个方法传递参数。
3).字段:作为类型的成员,定义在类型中,用于保存与类型或类型的实例相关的数据。
4).数组元素:定义在数组中,作为数据项的有序集合的一个成员。
2.变量的声明和初始化
变量的声明完成两件事情:
1).为变量命名,并且为它指定一种类型。
2).让编译器为它分配一块内存空间。
变量的声明和初始化经常通过一条语句来完成。就是声明一个变量,并且为变量赋初值。我在这里分开写,以说明整个过程。
1 // 1.声明一个整型变量x 2 int x; 3 // 2.初始化x 4 x = 10; 5 // 3.使用变量 6 Console.WriteLine(x);
3.多重变量声明
在一条声明语句可以声明多变量。但必须遵守以下规则:
1).多个变量的类型必须相同,并且只能在语句的开头写一次类型。
2).多个变量名之间用逗号表达式分隔。
3).每个变量名后面都可以包含初始化语句。
1 // 用一条语句声明3个整型变量x,y和z 2 int x, y = 10, z = 1000;
4.变量的自动初始化
一些类型的变量在声明的时候如果没有初始化,就会被自动设为该类型的默认值;而另一些不能自动初始化为默认值的类型的变量的值在赋值之前为“未定义”。
本地变量和方法的参数是不能被自动初始化的,而类的字段和数组元素是可以被自动初始化的。