C语言中变量和常量的区别

初学编程的人可能对变量和常量的概念理解不深,特写篇短文分析下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进行赋值操作会将0x12345678存入地址单元0x01234中,内存的状态如下图所示:

地址 内容
... ...
0x01234 0x78
0x01235 0x56
0x01236 0x34
0x01237 0x12
... ...

内存示意图

其他类型变量也是同理,都是代表一段内存区,且内存区的大小取决于变量的类型。编程时使用变量名表示该内存单元存储的值(value),取地址运算符&返回变量所在内存单元的地址,如上面的例子中,&data将返回地址0x01234。内存单元是可读可写的,因此显然变量是可读可写的。

你可能感兴趣的:(C语言编程点滴,Coding,c语言)