首页 理论教育 智能汽车设计与实践基础:数据类型及注意事项

智能汽车设计与实践基础:数据类型及注意事项

时间:2023-09-21 理论教育 版权反馈
【摘要】:基本类型基本类型分为数值类型和字符类型。实际使用过程中一定要注意变量的范围,避免数据溢出导致严重后果。构造类型构造类型分为数组、结构体、共用体和枚举类型。枚举可以根据int,short等任意一种数据类型来创建一种新型变量。用来存放程序数据的地址变量称为指针变量,该变量类型称为指针类型。“p1”指向的是一个1字节的char型变量,而“p2”指向的是一个4字节的int型变量。

智能汽车设计与实践基础:数据类型及注意事项

C语言是一门强类型语言,变量的数据类型直接决定了变量所占的内存空间和功能,下面回顾一下C语言中的数据类型。C语言的数据类型分为基本类型、构造类型、指针类型和空类型。

(1)基本类型

基本类型分为数值类型和字符类型。整形变量在内存中存放形式是以二进制形式存放,常用的有16位的short型和32位的int型,实际上char作为字符型也常当作8位整形变量使用,特别是在作为状态标志位等变化范围较小的变量时使用char型能有效节省空间。浮点型变量在内存中主要分符号位、指数位和尾数部分存放,数值类型主要有32位的float型。一般使用32位单片机是没有64位的变量类型的,所以此处不再提及long int和double。

实际使用过程中一定要注意变量的范围,避免数据溢出导致严重后果。char型取值范围是-127~128,无符号char型的取值范围是0~255;short型取值范围是-32 768~32 767,无符号short型取值范围为0~65 535;int型取值范围是-2 147 483 648~2 147 483 648,无符号int型取值范围是0到4 294 967 295;float型取值范围是-3.4E+38和3.4E+38。int型和float型取值范围较大,一般不会溢出,使用过程中需注意char型和short型变量的变化范围不能超出该变量取值范围。

C语言规定变量标志符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或者下划线,C语言中变量必须先定义后使用,变量被定义类型后,编译时才能为其分配相应的存储单元

(2)构造类型

构造类型分为数组、结构体、共用体和枚举类型。数组是常见和常用的构造类型,它是在内存中连续存储的具有相同类型的一组数据的集合。数组在软件程序中用得很多,图像像素信息的存放方式就是通过二维数组的方式存放。

数组的定义方式为:

类型说明符数组名[常量表达式];

需要注意的是,不同于matlab,C语言中并不能对数组进行批量处理,在读取数组数据,处理数组数据的时候需要使用循环体来实现。

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体是一种使用方便的构造类型,结合指针函数可以创造“类”和“对象”。尽管C语言是面向过程编程,但是使用结构体将相关的变量和操作函数结合在一起会让工程的可读性和可修改性更高。

结构体的定义方式为:

共用体也叫联合体。在进行某些算法的C语言编程时,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构就是共用体。

定义一个共用类型变量的一般形式为:(www.xing528.com)

共用体在实际应用中并不常见,但是可以通过它来巧妙地实现一些功能,比如在使用串口传输一个float型变量的时候不能直接传输该变量,也不能使用位操作来分步传输,但是可以定义一个8位两元素的数组和float型变量的共用体,传输该数组即传输了该float变量的值。

枚举类型在C语言中是一种构造数据类型,而在C#或C++,java,VB等一些编程语言中是一种基本数据类型而不是构造数据类型。枚举可以根据int,short等任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。

枚举类型的定义方式为:

嵌入式C语言编程过程中较少使用枚举类型。此处不作过多拓展。

(3)指针类型

指针是指程序数据在内存中的地址。用来存放程序数据的地址变量称为指针变量,该变量类型称为指针类型。指针类型的定义方式为:

变量类型*指针变量名;

C语言基础不牢固的读者需要注意,“*”前的变量类型是指指针所指向的变量的类型,不是指针变量的类型,指针变量的类型就是指针类型,指针变量自身也占用内存,因为指针指向的是地址,所以所有指针占用内存的大小都是相同的,在32位单片机中都是4字节。举例如下:

在32位单片机中定义“*p1”和“*p2”两个变量,“char”和“int”所指的是“p1”和“p2”这两个变量指示的地址的变量类型,“p1”和“p2”是同一个类型,都是占4字节的空间,而他们指示的变量却不一样。“p1”指向的是一个1字节的char型变量,而“p2”指向的是一个4字节的int型变量。

指针不仅仅可以指示变量,从语法上讲,指针变量可以指向任何类型的对象,可以指向数组、别的指针、函数和结构体等。同时指针类型直接作用在地址层面上,这使得程序的运行效率更高,所以指针类型是一个非常灵活高效的类型。

(4)空类型

空类型是一种特殊的返回类型,表示空函数,也就是没有返回值的函数。在定义一些没有返回值的函数的时候会使用空类型定义函数,相反,有返回值的函数需要在函数中设置返回值,使用关键词“return”来实现。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈