C语言——数据类型

一、基本类型:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【zookeeper分布式锁】

文章目录 1.Zookeeper 分布式锁实战 1.Zookeeper 分布式锁实战 1.1 什么是分布式锁 在单体的应用开发场景中涉及并发同步的时候&#xff0c;大家往往采用Synchronized&#xff08;同步&#xff09;或者其他同一个 JVM内Lock机制来解决多线程间的同步问题。在分布式集群工作的开…

《MySQL系列-InnoDB引擎01》MySQL体系结构和存储引擎

文章目录 第一章 MySQL体系结构和存储引擎1 数据库和实例2 MySQL配置文件3 MySQL数据库路径4 MySQL体系结构5 MySQL存储引擎5.1 InnoDB存储引擎5.2 MyISAM存储引擎5.3 NDB存储引擎5.4 Memory存储引擎5.5 Archive存储引擎5.6 Federated存储引擎 6 连接MySQL6.1 TCP/IP6.2 命名管…

关于“Python”的核心知识点整理大全48

目录 world_population.py 16.2.5 制作世界地图 americas.py 16.2.6 在世界地图上呈现数字数据 na_populations.py 16.2.7 绘制完整的世界人口地图 world_population.py 16.2.8 根据人口数量将国家分组 world_population.py 16.2.9 使用 Pygal 设置世界地图的样式 w…

ubuntu快速搭建java开发环境/java1.8/idea2021.1.3/mysql/doceker

当设置Java开发环境时&#xff0c;确保先安装Java Development Kit (JDK) 8、IntelliJ IDEA 2021.1.3专业版、Maven、Git、MySQL和Docker。以下是Ubuntu上安装这些工具的基本步骤&#xff1a; 1. 安装Java Development Kit (JDK) 8&#xff1a; 首先&#xff0c;更新APT软件包…

Presentation Error:编程中的细节之战

Presentation Error&#xff1a;编程中的细节之战 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起探讨在程序设计和编程中常见的问题之一…

PECL 到 LVPECL 的接口使用交流耦合或 3 电阻端接。采用交流耦合作热拔插时需注意防止因电容积累电荷放电导致器件损伤

交流耦合的必要性 PECL和LVPECL信号是差分信号,设计成具有一定的直流偏置电压。这种直流偏置电压在不同的设备或电路板之间可能会有所不同,直接连接可能导致直流偏置电平的冲突,从而损坏器件或影响信号完整性。交流耦合通过串联电容来隔离直流成分,只允许交流信号通过,从而…

web安全,常见的攻击以及如何防御

1、CSRF攻击 CSRF即Cross-site request forgery(跨站请求伪造) &#xff08;1&#xff09;为了防止这种攻击&#xff0c;表单一般都带有一个随机 token&#xff0c;告诉服务器这是真实请求。 <form action"your-bank.com/transfer" method"POST">&…

docker小白第九天

docker小白第九天 安装redis集群 cluster(集群)模式-docker版本&#xff0c;哈希槽分区进行亿级数据存储。如果1~2亿条数据需要缓存&#xff0c;请问如何设计这个存储案例。单机存储是不可能的&#xff0c;需要分布式存储&#xff0c;如果使用redis又该如何部署。 哈希取余分…

5-Docker实例-centos-nginx(3)

基于上次制作的centos-systemctl:1.0镜像,在其上安装nginx rpm,并构建nginx镜像。 1.制作nginx Dockerfile,并保存 命令: vim Dockerfile FROM centos-systemctl:1.0 MAINTAINER ztjCOPY nginx.repo /etc/yum.repos.d/ COPY epel.repo /etc/yum.repos.d/ COPY epel-tes…

数据结构——红黑树 and B-树

红黑树 根据平衡条件第4、5两点 最短路径&#xff0c;都是黑色 最长路径&#xff0c;红黑相间 最长是最短的两倍 B-树

Linux jed命令教程:如何有效地使用jed编辑器(附实例教程和注意事项)

Linux jed命令介绍 jed是一个可定制的文本编辑器&#xff0c;它在各种平台上都有应用&#xff0c;包括Linux、Windows、macOS等&#xff0c;但主要用于类Unix系统。jed特别适合用来编辑程序原始代码。 Linux jed命令适用的Linux版本 在Linux上&#xff0c;你的发行版的软件仓…

k8s-cni网络 10

Flannel vxlan模式跨主机通信原理 在同一个节点上的pod 流量通过cni网桥可以直接进行转发&#xff1b; 在需要跨主机访问时&#xff0c;数据包通过flannel(隧道) 知道另一边的mac地址&#xff0c;就可以拿到另一边的ip地址&#xff0c;然后构建常规的以太网数据包&#xff0c;…

QT+OSG/osgEarth编译之六十二:bsp+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_ac)

目录 1、bsp介绍 2、文件分析 3、pro文件 4、编译实践 1、bsp介绍 BSP文件是使用Quake游戏引擎开发的游戏所使用的地图文件,它包含关卡地图的布局信息、对象和资源。许多著名的游戏都使用BSP地图文件,包括《雷神之锤》系列、《半条命》系列、《反恐精英》(CS)系列和《使…

HTML中img图片进行等比例缩放的实例代码

img图片等比例缩放的方法 HTML中&#xff0c;要修改img元素定义的图片的大小&#xff0c;且是等比例缩放&#xff0c;不改变宽和高的比值&#xff0c;那么可以采用只设置img元素属性中width和height中的任何一个&#xff0c;不要同时设置两个即可实现img图片的等比例缩放效果。…

泛目录是干什么用的蚂蚁seo泛程序

泛目录是干什么用的蚂蚁seo泛程序目录 泛目录是一种常见的网站优化方法&#xff0c;属于黑帽技术的一种。它的核心原理是利用高权重的网站继承目录&#xff0c;然后快速获得收录与排名。这种方法可以帮助网站在搜索引擎中获得更好的排名&#xff0c;从而吸引更多的流量。 泛目…

python字符串编码解码基础知识

python字符串编码解码基础知识 python通过ord©获取字符c的unicode的编码值&#xff0c;为整数。通过chr(i)获取i对应的unicode的字符。通过str.encode()将字符串编码为原始字节&#xff0c;b.decode()将原始字节解码为字符串。 1 字符串基础知识 python通过ord©获…

白话机器学习的数学-1-回归

1、设置问题 投入的广告费越多&#xff0c;广告的点击量就越高&#xff0c;进而带来访问数的增加。 2、定义模型 定义一个函数&#xff1a;一次函数 y ax b &#xff08;a 是斜率、b 是截距&#xff09; 定义函数&#xff1a; 3、最小二乘法 例子&#xff1a; 用随便确定的参…

flutter学习-day21-使用permission_handler进行系统权限的申请和操作

文章目录 1. 介绍2. 环境准备2-1. Android2-2. iOS 3. 使用 1. 介绍 在大多数操作系统上&#xff0c;权限不是在安装时才授予应用程序的。相反&#xff0c;开发人员必须在应用程序运行时请求用户的许可。在 flutter 开发中&#xff0c;则需要一个跨平台(iOS, Android)的 API 来…

计算机网络:知识回顾

0 本节主要内容 问题描述 解决思路 1 问题描述 通过一个应用场景来回顾计算机网络涉及到的协议&#xff08;所有层&#xff09;。如下图所示场景&#xff1a; 学生Bob将笔记本电脑用一根以太网电缆连接到学校的以太网交换机&#xff1b;交换机又与学校的路由器相连&#xf…

scratch打砖块游戏 2023年12月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

scratch打砖块游戏 2023年12月电子学会图形化编程Scratch等级考试三级真题 一、题目要求 1、准备工作 (1)删除小猫角色,选择角色小球Ball、砖块Button3和球板Paddle (2)选择背景Stars,在背景底端绘制一条红色的线段 (3)建立一个变量“分数” 2、功能实现 (1)…