内存中 变量 常量 值 指针的理解整理
1. 内存
当代计算机系统的运行是在内存中进行的,内存的单位是字节,并且内存的每个字节都有一个唯一的地址。我们可以将内存视为一个大的字节数组,将内存地址视为数组中每个数组元素或字节的索引。内存地址由硬件定义且无法更改,并且它的寻址和分配都是系统进行的,人为无法干预。只能进行查看分配结果(譬如:&A 查看变量 A的地址)
所以我们编程语言中的数据类型都是要规定字节大小的,这样当我们使用的时候系统就知道分配多少字节的内存。
2. 代码的编写和编译
当我们编写程序时,我们为变量命名,但是当程序执行时,计算机通过它们的内存地址访问和操作所有数据。
编译器的任务是将每个变量名称映射到其唯一的内存地址,并且该地址被合并到机器代码中。但是变量在内存中的位置由编译器决定(这有点过于简化了)。
因此,变量具有三个特征:名称、内容(值)和内存地址。 我们编写程序时的变量名,只存在与编译中,编译后删除了变量的名称,但该名称在程序中仍然具有含义—变量的地址或其内容。
3. 变量 与 常量 区别
变量和常量的区别我们都很清楚,常量不能改变,并且初始化时一定要有值。
从上图我们可以看出,内存中常量和变量分配的内存区域不一致。
4.pointer 指针
指针变量本身也是一种变量,但是它存储其他变量的地址,而不是存储值的地址。这些地址是整数值。
pointer 指针变量的大小
指针变量的大小取决于编译器。例如,Borland C/C++ 编译器需要 2 个字节来保存整数值,因此,指针大小将为 2 个字节。而 Visual C++ 编译器需要 4 个字节来保存整数值,因此,在这种情况下,指针的大小将为 4 个字节。
共 0 条评论