【C语言】一文带你简单了解C语言
这里写目录标题)
- 引言
- C语言概述
- 基础语法
- 数据类型
- 运算符
- 循环语句
- 分支语句
- 函数
- 数组
- 指针
- 文件操作
- 内存管理
- 高级特性
- 结构体
- 枚举类型
- 联合体
- 预处理器
- 应用场景
- 操作系统
- 编译器
- 游戏开发
- 嵌入式系统
引言
- C语言是一种通用的计算机编程语言,具有高效、灵活、可移植等特点,在计算机科学和软件工程领域有着广泛的应用。本文将介绍C语言的概述、基础语法、文件操作、内存管理、高级特性和应用场景,并给出具体的示例和应用案例。
C语言概述
- C语言是一种由Dennis Ritchie于1972年在贝尔实验室发明的计算机编程语言,它是一种面向过程的、静态类型的、结构化的编程语言。C语言具有高效、简洁、可移植、灵活等特点,广泛应用于操作系统、编译器、游戏开发、嵌入式系统等领域。
基础语法
数据类型
- C语言支持多种数据类型,包括整型、浮点型、字符型、布尔型等。可以使用关键字int、float、char、bool等来声明和定义变量。
int a = 10;
float b = 3.14;
char c = 'A';
bool d = true;
运算符
- C语言支持多种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符等。可以使用运算符来完成各种数学运算、条件判断、逻辑运算等操作。
int a = 10, b = 20;
int c = a + b;
bool d = (a > b) && (b < c);
循环语句
- C语言支持多种循环语句,包括for循环、while循环、do while循环等。可以使用循环语句来重复执行某段代码,直到满足指定条件。
for (int i = 0; i < 10; i++) {printf("%d\n", i);
}int i = 0;
while (i < 10) {printf("%d\n", i);i++;
}int j = 0;
do {printf("%d\n", j);j++;
} while (j < 10);
分支语句
- C语言支持多种分支语句,包括if语句、switch语句等。可以使用分支语句来根据条件选择不同的执行路径。
int a = 10, b = 20;
if (a > b) {printf("a is greater than b\n");
} else {printf("a is less than or equal to b\n");
}int c = 2;
switch (c) {case 1:printf("c is 1\n");break;case 2:printf("c is 2\n");break;default:printf("c is not 1 or 2\n");break;
}
函数
- C语言支持函数的定义和调用,可以使用函数来封装某些功能,实现代码的模块化和复用。
int max(int a, int b) {return a > b ? a : b;
}
数组
- C语言支持数组的定义和操作,可以使用数组来存储一组相同类型的数据。数组可以是一维的、二维的、多维的等
int arr[5] = {1, 2, 3, 4, 5};
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
指针
- C语言支持指针的定义和操作,可以使用指针来访问内存地址,实现对变量、数组、结构体等的操作。
int a = 10;
int* p = &a;
printf("%d\n", *p);int arr[5] = {1, 2, 3, 4, 5};
int* q = &arr[0];
printf("%d\n", *(q+1));
文件操作
- C语言支持文件的输入输出操作,可以使用标准库函数来打开、关闭、读取、写入文件等。文件操作可以用于读取配置文件、日志输出、数据存储等。
FILE* fp = fopen("file.txt", "w");
if (fp == NULL) {printf("Failed to open file\n");
}fprintf(fp, "Hello, world!\n");
fclose(fp);
内存管理
- C语言支持内存的动态分配和释放,可以使用标准库函数来分配和释放内存空间。内存管理可以用于实现动态数据结构、优化程序性能等。
int* p = (int*)malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {*(p+i) = i+1;
}
free(p);
高级特性
结构体
- C语言支持结构体的定义和操作,可以使用结构体来表示一组相关的数据,方便操作和传递。
struct Person {char name[20];int age;
};
struct Person p = {"Alice", 20};
printf("%s is %d years old\n", p.name, p.age);
枚举类型
- C语言支持枚举类型的定义和操作,可以使用枚举类型来表示一组离散的值,方便程序的编写和维护。
enum Color {RED, GREEN, BLUE
};
enum Color c = RED;
switch (c) {case RED:printf("RED\n");break;case GREEN:printf("GREEN\n");break;case BLUE:printf("BLUE\n");break;
}
联合体
- C语言支持联合体的定义和操作,可以使用联合体来表示一组共用的内存空间,实现不同类型数据的存储和访问。
union Data {int i;float f;
};
union Data d;
d.i = 10;
printf("%d %f\n", d.i, d.f);
预处理器
- C语言支持预处理器的功能,可以使用预处理指令来实现代码的宏定义、条件编译等功能。
#define PI 3.14
#ifndef MAX
#define MAX 100
#endif
#ifdef DEBUG
printf("DEBUG mode\n");
#endif
应用场景
操作系统
- C语言被广泛应用于操作系统的开发,包括Linux、Unix、Windows等。操作系统涉及到底层的硬件控制和高效的系统调用,需要使用C语言来进行开发。
编译器
- C语言本身就是一种编译型语言,因此C语言的编译器也需要使用C语言进行开发。常见的C语言编译器包括GCC、Clang、Visual C++等。
游戏开发
- C语言在游戏开发领域也有着广泛的应用,可以用于开发游戏引擎、游戏逻辑、图形界面等。知名的游戏开发引擎包括Unity、Unreal Engine、Cocos2d-x等,它们都是使用C语言开发的。
嵌入式系统
- C语言也被广泛应用于嵌入式系统的开发,包括单片机、嵌入式Linux、RTOS等。嵌入式系统需要使用C语言进行开发,实现对硬件的控制和实时性的保证。
相关文章:
【C语言】一文带你简单了解C语言
这里写目录标题)引言C语言概述基础语法数据类型运算符循环语句分支语句函数数组指针文件操作内存管理高级特性结构体枚举类型联合体预处理器应用场景操作系统编译器游戏开发嵌入式系统引言 C语言是一种通用的计算机编程语言,具有高效、灵活、可移植等特点…...
LeetCode 589 LeetCode590 N叉树的前序遍历和后序遍历
题目: N叉树的前序遍历:给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔。 示例 1: 输入:root [1,null,3,2,4,null,5,…...
为什么CAD多段线没有面积属性或数值不对?快看过来!
有些设计师小伙伴在CAD制图过程中,会遇到这样的一个问题:在CAD图纸中直接选取线条后用工具标出来的面积是实际面积的两倍,而且用CAD面积查询命令直接选择对象查不出面积,这是为什么呢?本文就和小编来给大家分享一下CAD…...
WRF后处理:使用ncl脚本批量提取wrfout变量并输出/Shell 入门:Shell进入不同文件夹执行脚本
目录背景思路NCL提取wrfout特定变量Shell批量执行背景 在之前的博客WRF后处理总结我提到过将NCL与python结合进行后处理的问题,即,使用NCL进行wrfout变量的提取、计算、输出,再用已有python脚本绘图,这样可以极大节省时间。 对于…...
Consul在Windows系统下的安装与启动
1、Consul的简介 Consul 是由 HashiCorp 公司推出的一款开源工具,用于实现分布式系统的服务发现与服务配置。它内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key-Value 存储、多数据中心方案。 Consul 使用 GO 语言编写,因此天然具有可移…...
2022国赛16:神州路由器交换机BGP配置实例1
实验拓扑图 一、基本配置: R1配置: Router>ena Router#conf Router_config#host R1 R1_config#int g0/0 R1_config_g0/0#ip add 202.11.1.1 255.255.255.252 R1_config_g0/0#int l0 R1_config_l0#ip add 1.1.1.1 255.255.255.255 R1_confi...
PaddlePaddle NLP学习笔记1 词向量
文章目录1.语言模型 Language Model1.1 语言模型是什么1.2 语言模型计算什么1.3 n-gram Language Model2.神经网络语言模型NNLM2.1 N-gram模型的问题3. 词向量3.1 词向量(word Embedding)word2vec 词向量训练算法3.2 如何把词转换为词向量?3.3如何让向量具有语义信息…...
无重复全排列 [2*+]
目录 无重复全排列 [2*+] 程序设计 程序分析 无重复全排列 [2*+] 输出N个数的无重复全排列 Input 输入一个数值N 1<=N=50 Output 输出N个数的无重复全排列,每个数之间用空格隔开 最后一行输出无重复全排列的个数。 Sample Input 3 Sample Output 1 2...
【血泪建议】软件测试岗位现状,可惜之前没人告诉我,肠子都晦青了....
谈到现状,国内的软件测试行情目前呈现了两极分化的极端情况。 一个是早期的手工测试人员吐槽工作不好做,即使有工作也是外包,而且薪资太低;一方面是很多互联网企业感叹自动化测试人才难找,有技术的自动化测试工程师&a…...
Elastic(ELK) Stack 架构师成长路径
Elastic Stack(ELK Stack)是一个开源的日志分析平台,由 Elasticsearch、Logstash 和 Kibana 三个组件组成,主要用于数据搜索、分析和可视化。要成为一名 ELK Stack 架构师,需要遵循一定的成长路径,以便逐步…...
Netty的高性能体现在哪些方面
文章目录Netty的高性能体现在哪些方面1. 非阻塞I/O2. 零拷贝3. 内存池4. 线程模型Netty的高性能体现在哪些方面 Netty是一个高性能、异步事件驱动的网络应用程序框架,它具有出色的稳定性和灵活性。在现代的分布式系统和互联网应用中,Netty已经成为构建高…...
CompletableFuture详解
1、概述 咱们都知道可以通过继承Thread类或者实现Runnable接口两种方式实现多线程。但是有时候我们希望得到多线程异步任务执行后的结果,也就是异步任务执行后有返回值,Thread和Runnable是不能实现的。当我们需要返回值的时候怎么办呢? Java…...
(学习日记)2023.3.10
写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…...
【图像分割】Meta分割一切(SAM)模型环境配置和使用教程
注意:python>3.8, pytorch>1.7,torchvision>0.8 Feel free to ask any question. 遇到问题欢迎评论区讨论. 官方教程: https://github.com/facebookresearch/segment-anything 1 环境配置 1.1 安装主要库: (1&…...
AJ入门路线
一.AspectJ 入门 概述安装示例代码切入点表达式thisJoinPointStaticPart 和 thisJoinPoint与Spring 切面写法的对比总结 初步了解了aspectJ的使用,我们可以了解以下几点: 1)aspectJ的使用是在编译期,通过特殊的编译器可以在不改变…...
多商户商城小程序源码开发需具备哪些功能?
随着电商的进一步发展,传统企业为了更好的占领市场也纷纷向电商市场迈进,着手打造属于自己的商城系统。多商户商城系统是一种多商户、多商品、多支付的电子商务平台,功能丰富,涵盖多个行业,能够满足多种商家和用户的需…...
【动态规划模板】最长公共|上升子序列问题
最长公共子序列🍉 给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M。 第二行包含一个长度为N的字符串,表示字符串A。 第三行包含一个长度为M的字符串&am…...
Android系统启动流程--zygote进程的启动流程
在上一篇init进程启动流程中已经提到,在init中会解析一个init.rc文件,解析后会执行其中的命令来启动zygote进程、serviceManager进程等,下面我们来看一下: //文件路径:system/core/init/init.cppstatic void LoadBoot…...
C++程序设计——异常
一、C异常概念 异常处理是一种处理错误的方式,当一个函数发现自己无法处理的错误时,就可以抛出异常,让函数的直接或间接的调用者处理这个错误。 (1)throw:当问题出现时,程序会通过throw关键字抛…...
2022年第十三届蓝桥杯web开发—东奥大抽奖【题目、附官方解答】
冬奥大抽奖 介绍 蓝桥云课庆冬奥需要举行一次抽奖活动,我们一起做一个页面提供给云课冬奥抽奖活动使用。 准备 开始答题前,需要先打开本题的项目代码文件夹,目录结构如下: ├── css │ └── style.css ├── effect.g…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
