【C语言进阶:深度刨析数据在内存中的存储】数据类型详细介绍

您所在的位置:网站首页 c语言深度解析 【C语言进阶:深度刨析数据在内存中的存储】数据类型详细介绍

【C语言进阶:深度刨析数据在内存中的存储】数据类型详细介绍

2023-02-25 13:19| 来源: 网络整理| 查看: 265

本章重点内容:

数据类型的详细介绍整形在内存中的存储浮点型在内存中的存储解析

之前的博客中也提到过数据类型,以我们当前的认知感觉好像数据类型无非就是 char、short、int、long、long long、float、double 这样的一些类型,给我们的感觉好像C语言的数据类型也就这么些了吧,其实这些数据类型称之为内置类型,换句话讲就是C语言本身就具有的数据类型。当然这些类型真正在使用起来的时候会发现不足以描绘生活中的全部现象,因此后来又出现了结构体之类的介绍。

我们一般将 char 类型也归到整形中去,原因是字符在存储和表示的时候都用的是它的 ASCLL 码值;整型类型的种类之多,是因为其大小不一样:类型不同取值范围不同,这就使得我们在使用这些数据类型上就显得更加灵活,你希望使用一个多大的值,我们就可以给出一个多大的类型来使用。其实浮点型也是一样的道理:我们为了表示更高的精度,有了 double ,精度低一点,我们用 float 。退一步来讲,为什么又有整数和浮点数之分呢,因为生活中数字就有整数和小数之分。整数放到整形中,小数放到浮点数类型中,数据类型让这一切有理有据。

🌸类型的意义:

1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。

2. 如何看待内存空间的视角。

类型在一定程度上决定了看待内存的视角,比如说给出一个 float 类型的变量并且在里面放入一个值,那我就认为内存里面放入了一个 float 类型的数据,也就是说无论放进去什么,我都认为里面就是一个 float 类型的数据,其他的内置类型也是一样的道理。

⚡类型的基本归类

整形家族:

字符存储和表示的时候本质上使用的是 ASCLL 码值,ASCLL 码是整数,因此字符类型也归类到整形家族。

我们发现 char、int、short、long 都分为两种类型,一种是 unsigned,一种是 signed。我们发现在现实生活中表示数值时,有一些数值有正有负,比如温度;而有一些数只有正没有负,比如年龄。因此在C语言中,在表示有符号的数时我们可以用 signed 来修饰,用 unsigned 来修饰无符号的数。

这里在使用 unsigned  和 signed 时需要注意:

signed short [ int ] 等价于  short [ int ]

signed int  等价于  int 

signed long [ int ] 等价于  long [ int ]

signed char 不一定等价于  char,两者是否等价取决于编译器

浮点数家族: 

  > float 

  > double

构造类型(自定义类型):

  > 数组类型

  > 结构体类型   struct

  > 枚举类型  enum

  > 联合类型  union

这里解释一下数组为什么要归结于自定义类型,原因是我们可以指定数组的类型和个数,只要构造好数组,去掉数组名就是数组的类型,比如:int arr[10],我们去掉数组名 arr,剩下的 int [10] 就是该数组的类型,只要改变数组大小还是数组元素的类型,数组的类型也就发生改变。因此我们也将数组类型归到自定义类型下。

指针类型:

比如: int* pi 、char* pc、float* pf 、void* pv

我们用 int*、char*、float*、void* 来创建变量专门用来存放地址,有了这个地址我们就可以通过地址找到一块内存空间,从地址所指的起始位置开始向后访问,按照什么节奏访问取决于指针类型。

空类型:

> void

void 表示空类型(无类型),通常应用于函数的返回类型、函数的参数、指针类型。

代码示例如下

void test() //函数不需要返回值 { } void test(void) //函数不需要参数 { } void* p; //无具体类型的指针

感谢大家能够看完这篇博客,创作时长,小伙伴们觉得我的博客对你有帮助,不妨留下你的点赞的收藏,关注我,带你了解不一样的C语言。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3