一、数据类型的介绍
char //字符数据类型 1字节
short //短整形 2字节
int //整形 4字节
long //长整形 4或8字节(c标准中说,sizeof(long)>=sizeof(int),具体 的是没有给具体的规则的)
long long //更长的整形 8字节
float //单精度浮点型 4字节
double //双精度浮点型 4字节
1.1官网中查看<limits.h>查看数据类型的最大最小值;<stdint.h>查看整形的详细定义;<float.h>查看浮点型的详细定义;
二、类型的基本归类
整形家族:
char
unsigned char
signed char
short
unsigned short
signed short
int
unsigned int
signed int
long
unsigned long
signed long
long long
unsigned long long
signed long long
注:char字符本质上存储的是ASCII码值,是整形,所以归类的时候,放在整形;这意味着可以使用大于,小于号来比较char字符的大小;注意是char(字符)类型,不是字符串。
浮点数家族
float
double
自定义类型(构造类型)
自定义类型:自己创造的类型
数组类型
结构体类型 struct
枚举类型 enum
联合类型 union
数组类型举个例子
int arr1[10] ->int [10]
int arr2[5] ->int [5]
这两个数组的类型不一样,因为数组的元素个数发生了变化或元素的类型发生变化;
所以数组也是自定义类型,根据实际情况来指定大小和类型;
指针类型
int *ptr
char *ptr
float *ptr
void *ptr
空类型
void 表示空类型(无类型)
通常应用于函数的返回类型、函数的参数、指针类型
注:这个类型相当重要,在Linux调用函数中大多采用此类型,来传参和返回参;就是利用了其可以将任意类型转换为空类型(之后再转化为任意类型),和解引用之后是空,无法改变其变量等性质
举例:
int a=10;
int *ptr=&a;
void *ptr1=(void*)ptr; //无法通过ptr1找到a的值,保障了a无法通过ptr1改变
ptr=(int*)ptr1;
//此外,可以将int类型转换成(void*),来使用;
int a = 10;
void* ptr1 = (void*)a;
cout << a << endl;
cout << ptr1 << endl;
cout << (int)ptr1 << endl;