【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…...
Android屏幕刷新率与FPS(Frames Per Second) 120hz
Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数,单位是赫兹(Hz)。 60Hz 屏幕:每秒刷新 60 次,每次刷新间隔约 16.67ms 90Hz 屏幕:每秒刷新 90 次,…...

初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)
零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...

aurora与pcie的数据高速传输
设备:zynq7100; 开发环境:window; vivado版本:2021.1; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程,pc通过pcie传输给fpga,fpga再通过aur…...
第14节 Node.js 全局对象
JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局…...

实现p2p的webrtc-srs版本
1. 基本知识 1.1 webrtc 一、WebRTC的本质:实时通信的“网络协议栈”类比 将WebRTC类比为Linux网络协议栈极具洞察力,二者在架构设计和功能定位上高度相似: 分层协议栈架构 Linux网络协议栈:从底层物理层到应用层(如…...

【Ragflow】26.RagflowPlus(v0.4.0):完善解析逻辑/文档撰写模式全新升级
概述 在历经半个月的间歇性开发后,RagflowPlus再次迎来一轮升级,正式发布v0.4.0。 开源地址:https://github.com/zstar1003/ragflow-plus 更新方法 下载仓库最新代码: git clone https://github.com/zstar1003/ragflow-plus.…...
【大厂机试题+算法可视化】最长的指定瑕疵度的元音子串
题目 开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。比如: “a” 、 “aa”是元音字符串,其瑕疵度都为0 “aiur”不是元音字符串(结尾不是元音字符) “…...
React 进阶特性
1. ref ref 是 React 提供的一种机制,用于访问和操作 DOM 元素或 React 组件的实例。它可以用于获取某个 DOM 元素的引用,从而执行一些需要直接操作 DOM 的任务,例如手动设置焦点、选择文本或触发动画。 1.1. 使用 ref 的步骤 1. 创建一个 ref:使用 React.createRef 或 …...
Go 语言中switch case条件分支语句
1. 基本语法 package main import "fmt" func main() {var extname ".css"switch extname {case ".html":fmt.Println("text/html")case ".css":fmt.Println("text/css") // text/csscase ".js":fmt.…...

spring task定时任务快速入门
spring task它基于注解和配置,可以轻松实现任务的周期性调度、延迟执行或固定频率触发。按照我们约定的时间自动执行某段代码。例如闹钟 使用场景 每月还款提醒,未支付的订单自动过期,收到快递后自动收货,系统自动祝你生日快乐等…...