C语言的数据类型
- 一、概述
- 二、基础数据类型
- 1. 整数
- 1. 计算
- 2. 索引
- 2. 浮点数
- 3. 字符
- 4. 字符串
- 5. 指针
- 三、特殊数据类型
- 1. 枚举
- 2. 共用体
- 2. struct结构体
- 四、数据类型修饰符
- 1. const
- 2. unsigned、signed
一、概述
编程语言为抽象这个物理世界提供了依据,其中对于描述物理世界的情况提供了一个叫做数据类型的名字,这种数据类型是我们人类能够认识的东西,就像数字,字母,字符之类的。
C语言中也提供了数据类型这种说法,就像下面的图片里面猴子,我们用C语言描述图片里面的猴子,就可以用 C语言里面的 字符串 数据类型来描述:
char * imageDescription = "两只猴子,一个大猴子,一个小猴子";
下面是我对 C语言里面的数据类型的理解使用参悟。
二、基础数据类型
1. 整数
C语言里面的整数类型标识符就是:int, long, long long,short,就行 0,-1,-23,4235 等等,也就是不带小数的整数。最常用的是 int。 long, long long适合大场景的整数 ,相对于整数只是存的数值范围比较大而已,属性基本一致,后面我都是用int来举例代表整数的。short 就是使用时相对较小的索引范围值而已。在后面会有一个专门的表去归纳这些变量的内存模型。
C语言里面的整数用处很多,因为计算内部都是用二进制表示数据的,里面的数据本质上都是整数的,浮点数也是用二进制整数去描述的。整数有很多的性质都十分有用,比如整数除法的结果也是整数等等。整数在计算之外的最大用处就是索引,在数组、循环、判断、地址索引等场景都是用的整数去做的。
1. 计算
声明一个 int 变量也很简单的,直接是 int 变量名;如果没初始化默认是给的一个随机值,一定要记得初始化哈。因为在像循环的时候,总是得从一个有效的开始索引进行索引,如果没设置好值,这就会出问题,就会出现段错误。
C语言整数一个很有用的计算就是 除法, 而且 取余 运算只能 整数 哦
就像下面,除法会把除出来的数的小数部分给抛掉,只保留整数部分
// 声明变量并初始化,初始化就使用 =
int i = 0;
i = 1 / 2; //i = 0
取余 运算也是很简单的
int i = 11;
i = i / 2; //i = 0
对应 最经典便是 个十百位
#include <stdio.h>
int main()
{
int numA, numB, numC, numD;
printf("请输入一个三位数: ");
scanf("%d", &numA);
numA = (int)numA;
numD = numA % 10;
numC = (numA / 10) % 10;
numB = numA / 100;
printf("这个三位数的个十百分别为:%d %d %d",numD, numC, numB);
return 0;
}
2. 索引
数组的本质其实就是一个数据表,一维数组就是单行表,二维数组就是多行表,整数在索引的时候其实就可以当一个表示位置的强大工具。
就像下面的一个二维数据表就是用的 行 - 列 来确定位置的,这里用浮点数明显就是不行的。
表[ 行索引 ][ 列索引 ] 来确定一个位置的值
int martx[3][3] = {{0, 1, 2}, {4, 5, 6}, {7, 8, 9}};
对于上面的 martx 数组, 我们要取得 第 2 行,第 1 列的数据就是使用 martx[1][0] 。
最灵活的莫过于 对这个 索引 的变化。
2. 浮点数
浮点数其实就是 小数,对了科学计数法的写法也是浮点数类型哈。
在C语言里面的 浮点数的类型就是 float, double 两个类型,其实就是一个精度低,精度高的区别,一般使用double的多些。
对于这个的使用其实并不会太过多的考虑,但是要考虑到一个就是在 他和其他数据运算的时候,有他就会让数据的类型往浮点数靠
就像 7+7.32 的结果 就是浮点型
但 7+7 的结果就是 整型
3. 字符
4. 字符串
5. 指针
指针就是一个数据类型,专门存放其他变量的地址的一个类型。指针是一个很大内容,有兴趣可以看看我的笔记
指针入门基础
C的动态内存管理
指针与函数
指针和数组
指针与字符串
三、特殊数据类型
1. 枚举
enum
2. 共用体
uion
2. struct结构体
struct结构体 C语言给我们提供的一个开放的定义自己的 数据类型 的一个强大工具,我们可以用 struct 去描述一个数据结构,在这个结构里面用的就是上面提到的数据类型。