初学编程的人可能对变量和常量的概念理解不深,特写篇短文分析下C语言中变量常量的区别,其他语言中也类似。
首先说说常量。C语言中常量分为值常量和符号常量:
值常量如:2,“a”,3.14
符号常量如:#define PI 3.14 //定义了符号常量PI
当源代码文件被编译生成目标代码文件时,符号常量将被替换为值,如PI替换为3.14。
因此,当程序运行时,符号常量已经成为了值常量了。值常量与程序一起编译成为二进制机器码存入到内存的代码段中,冯·诺依曼体制计算机中程序运行时不可修改代码段,因此显然程序运行时常量是不可修改的。
然后我们说说变量。C语言中的变量就是符号化的地址:
例如语句int data;定义了整型变量data。当源代码文件被编译生成目标代码文件时,编译程序将变量名替换为内存相对地址。运行程序时,执行该语句会在内存分配连续的4个字节(32bit)空间用于存放整数,这4个字节的起始地址(假设为0x01234,小端模式,字对齐)由符号data表示。语句data=0x12345678;对data进行赋值操作会将0x1234567