【C语言】03 数据(1)

3.1  基本数据类型

在C语言中,仅有四种基本数据类型  ——  整型、浮点型、指针和聚合类型(数组、结构等

3.1.1  整型

整型又包括字符型、短整型、基本整型和长整型,他们都分为有符号和无符号两个版本,规定:

长整型至少和基本整型一样长,而整型至少应该和短整型一样长。

字符型在本质上是小整型值,缺省的 char 可能是 signed,也可能是 unsigned,这取决于编译器,因此,只有当 char型变量显式声明为 signed 或 unsigned 时,才对其执行算数运算。

、整型字面值(整型常量)

字面值是字面值常量的缩写,当程序内出现整型字面值时,它属于整型家族哪一种取决于字面值是如何书写的,并且可以在字面值后添加后缀来改变缺省规则,添加 L 或 l ,被解释为长整型。添加 U 或 u ,被解释为无符号整型,如果都添加,则被解释为无符号长整型。例如:

122L  

整型可以用八进制表示,在数字前加0,也可以用十六进制表示,在数字前加0x。例如:

0173       0xFFFF

字符常量就是用单引号引起来的单个字符或转义字符或三字母词。例如:

'M'      '\n'      '\102'      '??)'


、const 常量(符号常量)

与普通变量极为相似,只是在他被初始化之后,值就不可以在改变。例如:

const double pi = 3.141592;

const 常量与宏常量相比,优点是能指出类型,比如上个例子中的 pi 是 double 类型


、枚举类型

枚举类型指他的值为符号常量而不是字面值的类型。例如:

enum  Jar  { AB , CD , EF , GH , IJ }

首元素不附初值的话,默认为0,后一个元素不赋值的话,默认比前一个元素大1,这种类型的变量实际上是以整型的方式存储,这些符号名的实际值都是整型值。

宏和枚举的主要区别是作用的时间和存储形式不同。宏定义是在编译预处理阶段作用的,也就是在编译预处理时,就会进行宏替换,将程序中的所有宏名替换为所定义的常量名,而枚举则是在程序运行之后才起作用的。宏定义不分配内存空间,而枚举常量存储在数据的静态存储区中(这一点一定要注意)。宏只占用代码段的空间,而枚举除了占用代码段空间外,还耗费CPU资源。(关于宏我们在之后的预处理处再说)


3.1.2  浮点类型

浮点类型包括 float 、double 和 long double 类型,标准规定:long double 类型至少和 double 类型一样长。

浮点数字面值在缺省情况下都是 double 类型,除非在其后面有 L 或 l 后缀,表示为 long double 类型,或者跟一个 F 或 f ,表示为 float 类型。


3.1.3  指针类型

指针就是C语言为什么如此流行的重要原因。

变量的值存储于计算机的内存中,每个变量都占据一个特定的位置,每个位置都由地址唯一确定,指针只是地址的另一个名字罢了,指针变量就是其值为另一些变量的地址的变量。通过地址而不是名字来访问数据常常引起混淆,事实上并不应该搞混,比如门牌号来标识一个街道上的房屋,你不能把门牌号码和房子里的东西搞混。

我们可以把计算机的内存想象成一条街道上的一间间房子,每个房子用门牌号码唯一确定。即每个地址上都保存一个值,但是这个值和其地址值是独立且不同的,虽然都是数字…


字符串常量

C语言不存在字符串类型,但是提供字符串常量。字符串就是一串以 NUL 结尾的零个或多个字符。字符串通常存储在字符数组中,这也是C语言没有显式的字符串类型的原因。注意:字符串不包括 NUL 字符。例如:

"Hello"      "Line 1\n Line2"      ""

最后一个例子说明,字符串常量(不像字符常量)可以为空,但是内部依然存在 NUL 。

之所以把字符串常量放在这里,因为当在程序中使用字符串常量时后生成一个"指向字符的指针",当表达式中出现字符串常量时,使用的就是字符所存储的地址,而不是字符本身,因此,我们可以把一个字符串赋值给一个指向字符的指针,而不能赋值给字符数组(与初始化不同,可以初始化给一个字符数组),字符串常量的直接值就是指针,而不是本身。

如果觉得不能赋值或复制字符串不方便,C语言标准库函数给我们提供了函数,用于复制,连接,比较,计算字符串长度以及在字符串中查找特定字符的操作。(具体实现我们之后会说)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值