C语言中的常量、变量及其属性,类型、存储空间

博客源地址  http://www.codertown.cn/blog/?p=134

常量和变量其实就是C语言里的值,其他编程语言同样存在,这个跟数学里的是一样的。

1、常量

固定的值,不可改变的值是常量,几种类型:

在表达式中直接用数值表示;宏定义当然也是一种表达方式;枚举类型中的成员也属于常量的一种,但是枚举又可用来定义变量(功能较多,需要在代码中才能理解);const类型修饰的变量也是常量。

常量经常用来赋值,也可以在表达式中用来计算,在判断语句中用来做逻辑判断。

常量存放在常量区。

2、变量

可以重新赋值的一个代号;比如int a = 0;在其他地方,a可以被重新赋值,比如到某个地方a = 1,这就是一个变量。

变量的属性有以下几个:

static   静态变量,内存空间在全局变量区;

extern   在其他文件中可以使用的变量;

const   经过这个词语修饰后,该变量不可以被修改;

3、存储空间的解释

一个最简单程序的运行,需要内存存储变量,需要CPU执行编译后的二进制指令。

在一个操作系统中,它的编译器编译一个C语言程序之后,会有存放指令的内存地址(这是链接地址)。当被调用执行该程序后,CPU会跳转到该地址执行相应的指令,此时该程序中的变量,常量,函数等被调用的时候,就按照内存地址去取到相应的内容,然后一步一步执行。

最终生成的程序就有了地址空间的概念。

一般分成堆区(动态分配的内存)、栈区(变量存放)、全局变量区(独立于任何大括号之外的地方定义)、静态区(static修饰的变量)、常量区(存放常量、字符串常量),如此,我们知道了对于一个C语言程序来讲,各个不同内容存放的位置。

4、类型的解释

相当于模具吧,你用该模具制定出来的东西就只能是那个样子,不过在编程中,我们可以强制转换,可玩性高一点,不会那么死。类型一般用来定义变量。

不同的类型所占的内存空间不一样。一般情况下,char类型一个字节,short类型2个字节,int类型4个字节。

解释一般情况:在我们的系统中,一般是32位架构,所以一个指令周期为32位,那么在一个指令周期内可读取四个字节来保证效率最大化。与此同时,就涉及到了字节对齐的概念。什么叫对齐,就好比军训的时候列队,这一队只能站四个人,那么就是以四字节对齐,一个保证整齐度,一个保证一次性CPU能读到最多数据。

那么,不一般的情况下,有1字节对齐,2字节对齐,8字节对齐,在程序中均可以修改;而且该字节对齐只有在新定义的结构体类型中出现。

那么,什么是新定义的类型?

在C语言程序中,我们常用的类型有char\short\int\long\long long\float\double,当然仅仅有这些是不够的,所以K&R又实现了一种方式,可以新定义类型,比如struct、enum,由此我们可以定义出很多不容数据类型一起的新的类型。(这里一般根据实际情况去定义吧)。就好像我们可以自己定义模具一样。

 

总结下几点:

1、什么是变量,什么是常量以及常量的属性

2、存放变量和常量的存储空间是啥样的?

3、什么是类型,怎么理解?怎么使用?以及怎么定义新的类型?

理解了就好。欢迎讨论。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值