它们是构建其他数据类型的基础。
用于表示整数。例如,int a = 10;
整形中又有许多类型:
类型 | 大小 | 范围 |
int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
long long | 8字节 | -923372036854775808到923372036854775807 |
unsinged long long | 8字节 | 18446744073709551615 |
详细参考我之前的文章《C语言——整型数据类型-CSDN博客》。
也称实数类型: 主要用于表示小数。这包括浮点型(float)和双精度浮点型(double)。例如,float b = 3.14;
小数点可以前后浮动,故称浮点数。
类型 | 大小 | 精度 |
flaot | 4字节 | 7位小数 |
double | 8字节 | 16位小数 |
字符类型(char): 每个字符类型变量都能存储一个字符。例如,char c = 'A';
表示没有可用的值,主要用在函数的返回值类型中,表示该函数不返回值。
在C语言中,void类型是一种特殊类型,它通常用于以下三种情况:
如果一个函数不需要返回任何值,那么我们就可以将其返回类型设为void。例如:
void printHello()
{
printf("Hello, World!\n");
}
在这个例子中,printHello函数的返回类型是void,说明这个函数不返回任何值。
如果一个函数不需要任何参数,那么我们就可以在函数的参数列表中写void。例如:
int getRandomNumber(void)
{
return rand();
}
在这个例子中,getRandomNumber函数的参数列表是void,说明这个函数不接受任何参数。
void还可以用于声明泛型指针,即可以指向任何类型的指针。例如:
void *ptr;
在这个例子中,ptr是一个void指针,它可以用来存储任何类型的地址。
需要注意的是,虽然void类型的指针可以指向任何类型的数据,但是我们不能直接通过void指针对数据进行操作,必须先将void指针转换为正确的类型。
例如:
#include <stdio.h>
int main()
{
int num = 10;
void* ptr = #//泛型指针指向一个整型数据
//这时不能通过ptr这个泛型指针对整型数据num操作
int* intPtr = (int*)ptr;//将泛型指针强制转换成整型指针赋值给整型指针
//这时可以用intPtr这个整型指针对num进行操作
*intPtr = 11;
printf("%d", *intPtr);
return 0;
}
在这个例子中,我们首先创建了一个指向int变量的void指针,然后我们将void指针转换为int指针,之后我们用int指针改变了int变量的值,最后我们通过int指针输出了int变量的值。
C语言中的派生数据类型由基本数据类型(如int, float, char, double, void)和构造类型(如数组、指针、结构、联合和枚举)派生而来。以下是C语言中的派生数据类型:
数组是由相同数据类型的数据元素组成的数据结构。即数组是存储相同类型元素的集合。元素可以通过索引访问,索引通常是数字,可以是整数或者其他类型。
int arr1[10] = { 0 };
char arr2[20] = { '\0' };
详细参考我之前的文章《C语言——数组-CSDN博客》。
结构体是由不同类型的数据元素组成的数据结构。结构体用于存储多个相关的数据,它们可以是相同类型或不同类型的数据。
struct student
{
char name[50];
int roll;
float marks;
};
struct student s;
详细参考我之前的文章《C语言——结构体-CSDN博客》。
联合是一种特殊的数据类型,可以存储不同类型的数据,但一次只能存储其中的一个。联合提供了一种方式,让同一块内存能够保存多种类型的数据。
union value
{
int i;
float f;
char str[20];
};
union value v;
指针是一个变量,其值为另一个变量的地址,即直接地址或内存位置。我们可以使用指针变量来操作内存。
int *p;//整型指针
char *ch;//字符型指针
枚举是由用户定义的数据类型,它主要是用来声明整型常量。一个枚举类型定义了一个符号名称(identifier)和一组相关的整数值。
enum color {RED, GREEN, BLUE};//枚举类型
enum color c;
c = RED;
详细参考我之前的文章《C语言——枚举类型-CSDN博客》。
这些派生类型让C语言具有了更大的灵活性,可以处理更复杂的数据结构和问题。
用户可以使用typedef为一个已存在的数据类型定义一个新名字。例如,可以定义一个新的数据类型BOOL,用于存储0或1:
typedef int BOOL;
也可以用#define预处理指令定义新名字:
#define uint unsigned int