1. C语言的基本数据类型
归纳而言,只有4种数据类型,分别是整数型、浮点数型(即小数型)、指针型和聚合类型(数组、结构体)。
数据类型的本质意义是什么呢?
第一,数据类型从编程角度看,代表了处理的数据种类,程序执行过程就是对数据进行处理,数据类型表示对什么样的数据进行处理,数据类型又可分为基本数据类型和抽象数据类型,基本数据类型侧重计算机底层和数学方面,抽象数据类型侧重于有关现实世界的模型,比如现实世界的人类可以定义一种数据类型,现实世界的交通工具可以定义为一种抽象数据类型。
第二,数据类型从机器的角度看,代表了数据存储的型式,比如存储一个整数,是用几个字节存储、存储成二进制格式的顺序是什么等,又比如如何存储一个小数,又比如如何存储一个负整数,或者如何存储一个车辆的数据信息,再或者如何存储一个照片数据等待。
C语言的基本数据类型详细如下图所示:
C语言整型和浮点型数字的存储大小(一般的32位CPU机器):
2. 数据的声明语法
说明符合(一个或多个) 声明表达式列表
说明符包含需要声明的数据类型关键字、存储位置、数据类型的适用范围。
例如,
//声明3个字符变量 char one, two, three; //声明1个常量整型 const int count = 100; //声明1个存储于静态区的整型变量 static int saveTostatic = 9888; //声明1个字符指针 char *name = "声明1个字符指针";特别说明,声明指针时,在变量前加✳,表示该变量采用间接访问方式,即指针类型。
//声明一个整数数组,数组的大小为255 unsigned int intArray[255]; 特别说明,声明数组时必须确定大小。 //声明自定义类型 typedef unsigned int uint32; //采用自定义类型声明变量 uint32 uint32Array[0xFFFF];3. 数据和函数的作用范围和存储位置
数据和函数的作用范围分为一个文件内部和外部,数据的存储位置分为静态(程序全局)区和堆栈区(某一个函数内部),可以通过声明变量时定义作用范围和存储位置。
作用范围定义了数据或函数是否可以由别的文件调用。
数据的存储范围定义了数据是位于内存的静态存储区(即全局范围,在固定的位置,数据不会每次初始化,在程序没有主动更改变量的情况下变量的数据不会发生变化)还是函数的堆栈区(每一次会重新初始化和重新分配内存)。
在一个文件内,函数以外的情况,默认的作用域是全局,即声明一个变量,其它文件也可以使用,
类似:
如果不需要让别的文件调用,则在前面加上关键字 static,如下所示:
如果需要调用外部(本文件以外)的函数或是变量,则需要在声明前加上extern关键字,如下所示:
如果需要把一个函数内的变量(局部变量)存储于静态区,变成全局变量,则可在变量声明前面加上static 变量,如下所示:
效果就是每次调用这个函数,这个变量的值都不会重来,如下图所示: