关注我们
为什么要首先介绍数据类型?
因为(数据结构就是对数据类型的操作)不论是哪一种语言,都要有其基本数据类型,这些基本的数据类型就像一块块砖,而程序中的语句把这些砖组合到一起,最终得到我们想要的可执行文件。
替换高清大图
C语言数据类型主要包括:
基本类型、构造类型和指针类型
替换高清大图
TOP1
基本数据类型
替换高清大图
基本数据类型又分为数值型和字符型。字符型就是char类型,用来存放字符的。而数值型顾名思义就是存放数值的。
1. 数值型根据其存放的数值的大小以及精度的要求分为短整型,整型和长整型,单精度类型和双精度类型。
这里对于初学者可能存在一个误区:认为短整型,整形和长整形是占用固定的字节。(1)这种说法有一定的正确性,在同一个编译系统下,不同的类型占用的各自对用的字节。(2)但是不同的编译系统下,相同的数据类型可能占用的字节数就是不相同的,例如int 类型,在有些编译系统下是2个字节,在有些编译系统下占用4个字节。
替换高清大图
虽然类型占用的字节不一定确定,但都遵循: sizeof(short)<=sizeof(int)<=sizeof(long)<=sizeof(long long)。
2. 数值类型默认是分正负的,你也可以明确指定是无符号类型的,例如 unsigned int 。
替换高清大图
问
思考为什么已经有了int 类型,还要再产生一种对应的无符号类型呢?
答
替换高清大图
在计算机中一个字节由8个比特组成,每一个比特都有0 1两种值,而计算机区分数值是正还是负, 主要是判断类型所占字节的最高位比特位是0还是1,把最高比特位视为符号位,由于符号位的缘故,int 类型所能表示的数值范围必然会减小,在某些明确不会产生负数的数值的情况下,使用unsigned int 可以使得所表示数值的范围变大,从而不需要long int ,减少存储空间的占用。
替换高清大图
TOP2
构造类型
替换高清大图
构造类型,什么是构造类型?哈哈哈,就是非基本数据类型(这不是废话嘛?),构造类型分为数组,结构体,共用体和枚举类型(这个不经常用,大家用的时候再查即可)。
1. 数组这个大家比较熟悉,就是在连续的内存上分配对应数量的字节数,都过数组的下标偏移到对应的位置上,根据数组的类型,读取该类型所占用的字节数,从而读出该数据。
例如 int a[5], 假设int占用4个字节,那么该数组需要到内存上分配连续的20个字节,当我们要访问a[3] 时,首先要偏移到第12个字节,然后连续读取4个字节,也就是12~16个字节,从而读取到a[3]所存放的数值。
2. 结构体,终于可以描述结构体了,它是数据结构C语言版本最重要的内容,如果说基本数据类型是C语言这门课的砖,那么结构体就是数据结构这门课的砖。不论是线性表,链表,队列和栈,以及树和图,都需要用到结构体。
替换高清大图
什么是结构体?
结构体一般是由基本数据类型以及数组还有还没介绍到的指针类型共同组成的一种复合型的类型,说起来其实就是一个混合体,它是由其它的数据的类型组合而成。(具体如何使用,在结构体的章节里面会说)
替换高清大图
替换高清大图
为什么有了基本的数据类型还需要构造类型?
答案是很显而易见的,单独的基本数据类型无法方便的对从客观世界抽象而来的数据的表示,例如要想描述一个人抽象来的数据类型(假如我们只对他的年龄,性别,名字感兴趣),我们无法用单独的数据类型进行表示,这时候,结构体的作用就体现出来了。(如下图)
替换高清大图
替换高清大图
替换高清大图
TOP3
指针类型
替换高清大图
指针类型,很多刚开始学习C语言的同学觉得指针类型好难啊,不好理解,使用也是经常出错。指针类型与前面的基本数据类型和构造类型中的结构体是相对的,打个比方,基本数据类型就是银行里面的一个个账户名字,知道账户的名字,银行里面的柜员才知道你的账户里面到底有多少钱,而对应的基本数据类型的指针就像是一个个存折,从此你不在需要对柜员说你的账户名字了,你把存折给她/他 他就可以知道对应的账户里面有多少钱。同样的问题也来了,为什么有了基本的数据类型,也有了符合的数据类型,C语言又引入了指针的数据类型呢?我们需要用子函数的调用的例子来说明。(如下图)
〖特别声明〗:本文内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。如有侵犯您的原创版权或者图片、等版权权利请告知 wzz#tom.com,我们将尽快删除相关内容。