C语言——数据类型

发布时间:2023年12月27日

一、基本类型:

它们是构建其他数据类型的基础。

1、整型

用于表示整数。例如,int a = 10;

整形中又有许多类型:

类型大小范围
int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int2 或 4 字节0 到 65,535 或 0 到 4,294,967,295
short2 字节-32,768 到 32,767
unsigned short2 字节0 到 65,535
long4 字节-2,147,483,648 到 2,147,483,647
unsigned long4 字节0 到 4,294,967,295
long long8字节-923372036854775808到923372036854775807
unsinged long long8字节18446744073709551615

详细参考我之前的文章《C语言——整型数据类型-CSDN博客》。

2、浮点型

也称实数类型: 主要用于表示小数。这包括浮点型(float)和双精度浮点型(double)。例如,float b = 3.14;

小数点可以前后浮动,故称浮点数。

类型大小精度
flaot4字节7位小数
double8字节16位小数

3、字符型

字符类型(char): 每个字符类型变量都能存储一个字符。例如,char c = 'A';

二、void类型

表示没有可用的值,主要用在函数的返回值类型中,表示该函数不返回值。

在C语言中,void类型是一种特殊类型,它通常用于以下三种情况:

1、函数返回类型

如果一个函数不需要返回任何值,那么我们就可以将其返回类型设为void。例如:

void printHello()
{
    printf("Hello, World!\n");
}

在这个例子中,printHello函数的返回类型是void,说明这个函数不返回任何值。

2、函数参数

如果一个函数不需要任何参数,那么我们就可以在函数的参数列表中写void。例如:

int getRandomNumber(void)
{
    return rand();
}

在这个例子中,getRandomNumber函数的参数列表是void,说明这个函数不接受任何参数。

3、指针类型

void还可以用于声明泛型指针,即可以指向任何类型的指针。例如:

void *ptr;

在这个例子中,ptr是一个void指针,它可以用来存储任何类型的地址。

需要注意的是,虽然void类型的指针可以指向任何类型的数据,但是我们不能直接通过void指针对数据进行操作,必须先将void指针转换为正确的类型。

例如:

#include <stdio.h>

int main()
{
	int num = 10;
	void* ptr = &num;//泛型指针指向一个整型数据
	//这时不能通过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语言中的派生数据类型:

1、数组(Array)

数组是由相同数据类型的数据元素组成的数据结构。即数组是存储相同类型元素的集合。元素可以通过索引访问,索引通常是数字,可以是整数或者其他类型。

int arr1[10] = { 0 };
char arr2[20] = { '\0' };

详细参考我之前的文章《C语言——数组-CSDN博客》。

2、结构体(Structure)

结构体是由不同类型的数据元素组成的数据结构。结构体用于存储多个相关的数据,它们可以是相同类型或不同类型的数据。

struct student
{
    char name[50];
    int roll;
    float marks;
};
struct student s;

详细参考我之前的文章《C语言——结构体-CSDN博客》。

3、联合(Union)

联合是一种特殊的数据类型,可以存储不同类型的数据,但一次只能存储其中的一个。联合提供了一种方式,让同一块内存能够保存多种类型的数据。

union value
{
    int i;
    float f;
    char str[20];
};
union value v;

4、指针(Pointer)

指针是一个变量,其值为另一个变量的地址,即直接地址或内存位置。我们可以使用指针变量来操作内存。

int *p;//整型指针
char *ch;//字符型指针

5、枚举(Enumeration)

枚举是由用户定义的数据类型,它主要是用来声明整型常量。一个枚举类型定义了一个符号名称(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
文章来源:https://blog.csdn.net/stewie6/article/details/135169334
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。