当前位置: 首页 > news >正文

【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语言

这里写目录标题&#xff09;引言C语言概述基础语法数据类型运算符循环语句分支语句函数数组指针文件操作内存管理高级特性结构体枚举类型联合体预处理器应用场景操作系统编译器游戏开发嵌入式系统引言 C语言是一种通用的计算机编程语言&#xff0c;具有高效、灵活、可移植等特点…...

LeetCode 589 LeetCode590 N叉树的前序遍历和后序遍历

题目&#xff1a; N叉树的前序遍历&#xff1a;给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔。 示例 1&#xff1a; 输入&#xff1a;root [1,null,3,2,4,null,5,…...

为什么CAD多段线没有面积属性或数值不对?快看过来!

有些设计师小伙伴在CAD制图过程中&#xff0c;会遇到这样的一个问题&#xff1a;在CAD图纸中直接选取线条后用工具标出来的面积是实际面积的两倍&#xff0c;而且用CAD面积查询命令直接选择对象查不出面积&#xff0c;这是为什么呢&#xff1f;本文就和小编来给大家分享一下CAD…...

WRF后处理:使用ncl脚本批量提取wrfout变量并输出/Shell 入门:Shell进入不同文件夹执行脚本

目录背景思路NCL提取wrfout特定变量Shell批量执行背景 在之前的博客WRF后处理总结我提到过将NCL与python结合进行后处理的问题&#xff0c;即&#xff0c;使用NCL进行wrfout变量的提取、计算、输出&#xff0c;再用已有python脚本绘图&#xff0c;这样可以极大节省时间。 对于…...

Consul在Windows系统下的安装与启动

1、Consul的简介 Consul 是由 HashiCorp 公司推出的一款开源工具&#xff0c;用于实现分布式系统的服务发现与服务配置。它内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key-Value 存储、多数据中心方案。 Consul 使用 GO 语言编写&#xff0c;因此天然具有可移…...

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 如何把词转换为词向量&#xff1f;3.3如何让向量具有语义信息…...

无重复全排列 [2*+]

目录 无重复全排列 [2*+] 程序设计 程序分析 无重复全排列 [2*+] 输出N个数的无重复全排列 Input 输入一个数值N 1<=N=50 Output 输出N个数的无重复全排列,每个数之间用空格隔开 最后一行输出无重复全排列的个数。 Sample Input 3 Sample Output 1 2...

【血泪建议】软件测试岗位现状,可惜之前没人告诉我,肠子都晦青了....

谈到现状&#xff0c;国内的软件测试行情目前呈现了两极分化的极端情况。 一个是早期的手工测试人员吐槽工作不好做&#xff0c;即使有工作也是外包&#xff0c;而且薪资太低&#xff1b;一方面是很多互联网企业感叹自动化测试人才难找&#xff0c;有技术的自动化测试工程师&a…...

Elastic(ELK) Stack 架构师成长路径

Elastic Stack&#xff08;ELK Stack&#xff09;是一个开源的日志分析平台&#xff0c;由 Elasticsearch、Logstash 和 Kibana 三个组件组成&#xff0c;主要用于数据搜索、分析和可视化。要成为一名 ELK Stack 架构师&#xff0c;需要遵循一定的成长路径&#xff0c;以便逐步…...

Netty的高性能体现在哪些方面

文章目录Netty的高性能体现在哪些方面1. 非阻塞I/O2. 零拷贝3. 内存池4. 线程模型Netty的高性能体现在哪些方面 Netty是一个高性能、异步事件驱动的网络应用程序框架&#xff0c;它具有出色的稳定性和灵活性。在现代的分布式系统和互联网应用中&#xff0c;Netty已经成为构建高…...

CompletableFuture详解

1、概述 咱们都知道可以通过继承Thread类或者实现Runnable接口两种方式实现多线程。但是有时候我们希望得到多线程异步任务执行后的结果&#xff0c;也就是异步任务执行后有返回值&#xff0c;Thread和Runnable是不能实现的。当我们需要返回值的时候怎么办呢&#xff1f; Java…...

(学习日记)2023.3.10

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…...

【图像分割】Meta分割一切(SAM)模型环境配置和使用教程

注意&#xff1a;python>3.8, pytorch>1.7,torchvision>0.8 Feel free to ask any question. 遇到问题欢迎评论区讨论. 官方教程&#xff1a; https://github.com/facebookresearch/segment-anything 1 环境配置 1.1 安装主要库&#xff1a; &#xff08;1&…...

AJ入门路线

一.AspectJ 入门 概述安装示例代码切入点表达式thisJoinPointStaticPart 和 thisJoinPoint与Spring 切面写法的对比总结 初步了解了aspectJ的使用&#xff0c;我们可以了解以下几点&#xff1a; 1&#xff09;aspectJ的使用是在编译期&#xff0c;通过特殊的编译器可以在不改变…...

多商户商城小程序源码开发需具备哪些功能?

随着电商的进一步发展&#xff0c;传统企业为了更好的占领市场也纷纷向电商市场迈进&#xff0c;着手打造属于自己的商城系统。多商户商城系统是一种多商户、多商品、多支付的电子商务平台&#xff0c;功能丰富&#xff0c;涵盖多个行业&#xff0c;能够满足多种商家和用户的需…...

【动态规划模板】最长公共|上升子序列问题

最长公共子序列&#x1f349; 给定两个长度分别为N和M的字符串A和B&#xff0c;求既是A的子序列又是B的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数 N 和 M。 第二行包含一个长度为N的字符串&#xff0c;表示字符串A。 第三行包含一个长度为M的字符串&am…...

Android系统启动流程--zygote进程的启动流程

在上一篇init进程启动流程中已经提到&#xff0c;在init中会解析一个init.rc文件&#xff0c;解析后会执行其中的命令来启动zygote进程、serviceManager进程等&#xff0c;下面我们来看一下&#xff1a; //文件路径&#xff1a;system/core/init/init.cppstatic void LoadBoot…...

C++程序设计——异常

一、C异常概念 异常处理是一种处理错误的方式&#xff0c;当一个函数发现自己无法处理的错误时&#xff0c;就可以抛出异常&#xff0c;让函数的直接或间接的调用者处理这个错误。 &#xff08;1&#xff09;throw&#xff1a;当问题出现时&#xff0c;程序会通过throw关键字抛…...

2022年第十三届蓝桥杯web开发—东奥大抽奖【题目、附官方解答】

冬奥大抽奖 介绍 蓝桥云课庆冬奥需要举行一次抽奖活动&#xff0c;我们一起做一个页面提供给云课冬奥抽奖活动使用。 准备 开始答题前&#xff0c;需要先打开本题的项目代码文件夹&#xff0c;目录结构如下&#xff1a; ├── css │ └── style.css ├── effect.g…...

一份两年前一个月的工作经历没写在简历上,背调前主动坦白,却被背调公司亮了红灯,到手的offer没了!...

只因为简历上漏写了一份一个月的工作&#xff0c;就被亮了背调红灯&#xff0c;这公平吗&#xff1f;一位网友就被狠狠坑了一把&#xff0c;来看下他的遭遇&#xff1a;他有一份两年前、时长一个月的工作经历没写在简历上&#xff0c;背调前主动和背调公司还有招聘方hr都说了这…...

C++游戏分析与破解方法介绍

1、C游戏简介 目前手机游戏直接用C开发的已经不多&#xff0c;使用C开发的多是早期的基于cocos2dx的游戏&#xff0c;因此我们这里就以cocos2d-x为例讲解C游戏的分析与破解方法。 Cocos2d-x是一个移动端游戏开发框架&#xff0c;可以使用C或者lua进行开发&#xff0c;也可以混…...

食堂总是拥挤不堪?解决用餐拥挤,教你一招

随着近几年科技的快速发展&#xff0c;行业里出现了很多新的名词&#xff0c;比如智慧社区、智慧旅游、智慧建筑&#xff0c;那么智慧食堂是什么呢&#xff1f;它又是如何实现全自助、全智能消费&#xff1f; 在先进的智能技术以及市场需求带动下&#xff0c;智慧食堂经历了由传…...

ubuntu系统安装时 MBR和GPT的区别

主引导记录&#xff08;Master Boot Record &#xff0c; MBR&#xff09;是指一个存储设备的开头 512 字节。它包含操作系统的引导器和存储设备的分区表。   全局唯一标识分区表&#xff08;GUID Partition Table&#xff0c;缩写&#xff1a;GPT&#xff09;是一个实体硬盘…...

我在windows10下,使用msys64 mingw64终端

系列文章目录 文章目录系列文章目录前言一、MSYS2是什么&#xff1f;前言 msys2官网 MSYS2 &#xff08;Minimal SYStem 2&#xff09; 是一个MSYS的独立改写版本&#xff0c;主要用于 shell 命令行开发环境。 同时它也是一个在Cygwin &#xff08;POSIX 兼容性层&#xff09…...

个人2023FALL CS申请总结(PhD/MPhil/保研夏令营)

个人2023FALL CS申请总结&#xff08;PhD/MPhil/保研夏令营&#xff09;写在最前个人BG及申请情况个人BG申请情况MPhilPhD收获一句话总结&#xff1a;心态爆炸没用&#xff0c;脸皮够厚够勇就行 写在最前 真是一场恶战。有几天&#xff0c;我每天早上都海投几封套瓷邮件&…...

【优化算法】使用遗传算法优化MLP神经网络参数(TensorFlow2)

文章目录任务查看当前的准确率情况使用遗传算法进行优化完整代码任务 使用启发式优化算法遗传算法对多层感知机中中间层神经个数进行优化&#xff0c;以提高模型的准确率。 待优化的模型&#xff1a; 基于TensorFlow2实现的Mnist手写数字识别多层感知机MLP # MLP手写数字识别…...

CAM类激活映射 |神经网络可视化 | 热力图

文章目录前言&#xff1a;安装库&#xff1a;分类案例--ResNet50分割案例AttributeError: ‘tuple‘ object has no attribute ‘cpu‘RuntimeError: grad can be implicitly created only for scalar outputsTypeError: cant convert cuda:0 device type tensor to numpy. Use…...

RecyclerView+BaseRecyclerViewAdapterHelper显示不全只显示第一行item的解决问题

RecyclerViewBaseRecyclerViewAdapterHelper显示不全只显示第一行item&#xff0c;我懵了…&#xff0c;我不说多&#xff0c;直接说吧 先看一下适配器代码中的convert()方法&#xff1a; class MineRadioAdapter(layoutResId: Int R.layout.item_my_live) :BaseQuickAdapte…...

解决后端无法对前端的ajax请求重定向

本章目录&#xff1a; 问题描述 AJAX请求后端直接重定向失败解决方案 后端拦截请为响应头添加重定向标志后端拦截器为响应头添加重定向路径前端响应拦截器获取响应头数据&#xff0c;并通过location.href url 完成页面跳转一、问题描述 本来想在拦截器里设置未登录用户访问指…...

南京代理注册公司机构/东莞网站seo技术

整理了一下5年前左右的一些资料 大学期间和研究生期间参加了很多数学建模比赛&#xff0c;放在网盘好久啦&#xff0c;现在把资源共享到Github上面&#xff0c;供大家参考。 github链接&#xff1a;https://github.com/XiaoGongWei/MMP MathematicalModelingPapers 数学建模…...

投资平台/廊坊seo关键词排名

css多种书写格式 行内样式 代码直接写在标签内部 <!--书写css第一种方式,行内样式--> <div style"color: red">css第一种书写格式</div>内联样式 在head标签之间加上一对style标签&#xff0c;在其中编写css代码 <style>/*书写css代码的…...

浦东区建设工程监督网站/市场调查报告模板及范文

You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? 思路&#xff1a;这道题是斐波那契数列的延伸。首先用最简单的递归的方法 1 class Solution { 2…...

政务服务网站建设汇报/网络营销方案策划论文

首先&#xff0c;还是想给大家继续话痨话痨&#xff0c;脱离舒适区&#xff0c;努力坚持下去。我们只要超越百分之80 的人就够了。就像陈皓老师说的&#xff0c;你只看看中国的互联网&#xff0c;你就会发现&#xff0c;他们基本上全部都是在消费大众&#xff0c;让大众变得更为…...

大学生做网站怎么赚钱/杭州千锋教育地址

作者很直男&#xff0c;兄弟们直接复制代码看效果吧&#xff01;&#xff01;&#xff01; 一些小细节&#xff0c;大家可以自己动手修改。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"…...

仿网站ppt怎么做/网址怎么推广

一、源码特点 JSP strus2特种设备信息管理系统 是一套完善的WEB设计系统&#xff0c;对理解JSP java 编程开发语言有帮助&#xff0c;系统采用struts2框架 MVC模式进行开发&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 应用技术&#x…...