黑马程序员--C语言基础之--数据类型
------IOS培训期待与您交流! -------
所谓的类型,就是对数据分配存储单元的安排,包括存储单元的长度以及数据的形式,不同的类型分配不同的长度和存储的形式,C语言允许使用的数据类型如下图:
接下来将对几个类型做一个简单的介绍:
一、基本数据类型之--整型(int)
(一)、系统中为每一个整型数据分配了4个字节的存储空间,整型数有以下几种类型:
(1)短整型(short int):类型名为shotr int或者简写为short, 系统为分配了2个字节的存储空间,变量值的范围是-32768~32767,输出时格式声明为:%d或者%i。
(2)长整型(long int):类型名为long int或者简写为long, 系统为分配了4个字节的存储空间,变量值的范围是-2147483648~2147483647,输出时格式声明为:%ld。
(3) 双长整型(long long int):类型名为long long int或者简写为long long, 系统为分配了8个字节的存储空间,变量值的范围是
-922337203654775808~922337203654775807,输出时格式声明 为:%lld。
(4)无符号基本整型(unsigned int):类型名为unsigned int或者简写为int, 系统为分配了4个字节的存储空间,变量值的范围是0~4294967295,输出时格式声明为:%u。
(5)有符号整型(signed int):类型名为signed int或者简写为int, 系统为分配了4个字节的存储空间,输出时格式声明为:%d。
在这里有个地方需要注意一下:就是unsigned和signed,定义时,它们只会改变你的最高位,并不会修改数据类型的长度,两者的区别就是:决定最高位是否会被当为符号位。
(二)、整型变量的定义
可以用下列语句定义整型变量:
(1)int a, b; 同时定义两个变量a与b
(2)int a = 10; 在定义变量a的同时赋初值给a。
注意:int a ,int b;这种写法是错误的,不可以在一个语句中写两个定义类型。
二、基本数据类型之--浮点型(float)
(一)、浮点型又可分为以下两种类型的浮点数
(1)单精度浮点数(float):系统为其分配了4个字节的存储空间,共32位二进制数, 变量的范围是
3.4x10-38E~3.4x10+38E,输出时格式声明为:%f。
(2)双精度浮点数(double):系统为其分配了8个字节的存储空间,共64位二进制数, 变量的范围是
1.7x10-308E~1.7x10+308E,输出时格式声明为:%f。
(二)、浮点型变量定义
可以用下列语句定义浮点型变量:
(1)float a, f;
(2)double b;
三、基本数据类型之--字符型(char)
(一)、目前大多数系统采用ASCII字符集,各种字符集的基本集都包括了127个字符,其中就包括:
(1)字母:大小写20个英文字母
(2)数字:0~9
(3)29个专门的符号:!” # & ‘ () * + , - . / : ; < = > ? [ \ ] ^ _ { | } ~
(4)空格符:空格、水平制表符(tab)、垂直制表符、换行、换页
(5)不能显示的字符:空(null)字符('\0')、警告('\a')、退格('\b')、回车('\r')等等。
系统为字符变量分配了1个字节的存储空间,符号字符型数的取值范围为-128~127, 无符号字符型数到值范围是0~255。
(二)、字符常数的表示
(1)符号表示的字符可直接用单引号括起来表示, eg:'a', '9', 'Z',也可用 该字符的ASCII码值表示, 例如十进制数85表示大写字母'U', 十六进制数0x5d表示 ']',
八进制数0102表示大写字母'B';
(2)不能用符号表示的控制符, 只能用ASCII码值来表示, 如十进制数10表示换行,六进制数0x0d表示回车, 八进制数033表示Esc。
(三)、字符类型定义
char a;表示定义一个字符变量
a = 'B';表示给字符变量赋值B这个字符
四、指针类型(*)
指针是一种特殊的数据类型, 在其它语言中一般没有。指针是指向变量的地址, 实质上指针就是存贮单元的地址。根据所指的变量类型不同,可以是整型指针 (int *)、
浮点型指针(float *)、字符型指针(char *)、结构指针(struct *)和联合指针(union *),由于指针所涉及的知识较为宽广且知识较为杂乱,将在之后的博文中,
再进行更加详细的介绍。
五、构造类型
构造类型中又可分为四种类型:
(1)数组:数组是一组有序数据的集合,数组中个数据的排列是有一定的规律的,数组的下标就是代表着数据在数组中的序号;同时,用一个数组名和下标便能够唯一地确认
数组中的元素,数组中的每一个元素都属于同一个数据类型,不能在数组中添加不同类型的数据。
定义数组:类型符 数组名[常量表达式](注意:在定义时,常量表达式只能是常量,不能包含变量)
eg:int str[6] = {3,5,6,7,7,8};
(2)结构体(struct):C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,就是结构体。
定义结构体时,首先需要先定义一个结构体的类型,之后根据定义的结构体类型再定义变量:
第一步:定义结构体类型:struct 结构体类型名{成员列表};
eg:struct Student{int age; char *name};定义个一个类型为Student的结构体,结构体中包含两个成员;
第二步:定义变量:struct 结构体类型名 变量名称
eg:struct Student stu 定义了一个名为stu的变量
第三步:给变量赋值:变量名.成员名
eg:stu.age = 19 ;给结构体中的age这个成员赋值
(3)共用体(union)
(4)枚举(enum)
六、无值型(void)
无值型字节长度为0, 主要有两个用途: 一是明确地表示一个函数不返回任何 值; 一是产生一个同一类型指针(可根据需要动态分配给其内存)。
例如: void *buffer; /*buffer被定义为无值型指针*/