【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…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...

wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...