news 2026/10/28 1:53:58

C语言基础语法介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言基础语法介绍

C 语言简介

C 是一种:

  • 面向过程(Procedure-Oriented)
  • 编译型(Compiled)
  • 静态类型(Static Typed)
  • 接近底层(Low-level)
  • 高性能

的编程语言。

由 Dennis Ritchie 在贝尔实验室开发。

现代操作系统、数据库、嵌入式系统、大量编程语言(如 C++、Java、Go、Rust)都深受 C 影响。


1. Hello World

#include<stdio.h>intmain(){printf("Hello World\n");return0;}

2. 变量与赋值

基本变量

intage=18;floatprice=9.9;chargrade='A';

变量修改

intx=10;x=20;

常量

constintMAX=100;

3. 数据类型

数字类型

类⁠型说⁠明
int整⁠数
float单⁠精⁠度⁠浮⁠点
double双⁠精⁠度⁠浮⁠点
char字⁠符
long长⁠整⁠数

示例

inta=10;doublepi=3.14159;charc='H';

4. 算数运算

inta=10;intb=3;printf("%d\n",a+b);// 加printf("%d\n",a-b);// 减printf("%d\n",a*b);// 乘printf("%d\n",a/b);// 除printf("%d\n",a%b);// 取余

5. 逻辑运算

运⁠算⁠符含⁠义
&&与
!非

示例

intage=20;if(age>18&&age<30){printf("青年\n");}

6. 比较运算

运⁠算⁠符含⁠义
==等⁠于
!=不⁠等⁠于
>大⁠于
<小⁠于
>=大⁠于⁠等⁠于
<=小⁠于⁠等⁠于

7. if 判断

intscore=85;if(score>=90){printf("优秀\n");}elseif(score>=60){printf("及格\n");}else{printf("不及格\n");}

8. switch 分支

intday=2;switch(day){case1:printf("星期一");break;case2:printf("星期二");break;default:printf("未知");}

9. for 循环

for(inti=0;i<5;i++){printf("%d\n",i);}

10. while 循环

inti=0;while(i<5){printf("%d\n",i);i++;}

11. 数组(C 的“列表”)

C 没有真正的 List。

通常用:

  • 数组(Array)
  • 链表(Linked List)

代替。


数组

intnums[5]={1,2,3,4,5};printf("%d\n",nums[0]);

遍历数组

for(inti=0;i<5;i++){printf("%d\n",nums[i]);}

12. 字符串

C 没有真正的字符串类型。

本质是:

charstr[]="hello";

实际上是:

['h','e','l','l','o','\0']

\0表示字符串结束。


13. 结构体(Struct)

C 没有 class。

通常使用 struct。

structPerson{charname[20];intage;};

使用结构体

structPersonp;p.age=18;

14. 函数

定义函数

intadd(inta,intb){returna+b;}

调用函数

intresult=add(3,5);

15. 指针(C 最核心特性)




6

指针是 C 最重要、最底层的概念。


地址

inta=10;printf("%p",&a);

&a表示变量地址。


指针变量

int*p=&a;

含义:

p 保存 a 的内存地址

通过指针修改变量

*p=20;

等于:

a=20;

16. 指针为什么重要

因为:

  • 数组
  • 字符串
  • 函数参数
  • 动态内存
  • 文件系统
  • 操作系统

本质都依赖指针。


17. 动态内存 malloc/free

#include<stdlib.h>int*arr=malloc(5*sizeof(int));free(arr);

含义

malloc: 在堆内存申请空间 free: 手动释放内存

18. C 的“集合”和“Map”

C 标准库没有:

  • Set
  • Map
  • Dictionary

通常需要:

  • 自己实现
  • 使用第三方库

常见替代方案

需⁠求C中⁠的⁠实⁠现
List数⁠组 / 链⁠表
Set哈⁠希⁠表
Map哈⁠希⁠表
Queue队⁠列⁠结⁠构
Tree二⁠叉⁠树

19. 文件操作

FILE*fp=fopen("test.txt","r");fclose(fp);

20. 异常处理

C 没有:

try / catch

常见方式

返回错误码

intdivide(inta,intb){if(b==0){return-1;}returna/b;}

使用 errno

#include<errno.h>

21. typedef(类型别名)

typedefunsignedlongulong;

22. enum 枚举

enumColor{RED,GREEN,BLUE};

23. 宏 define

#definePI3.14

宏函数

#defineSQUARE(x)((x)*(x))

24. 头文件

#include<stdio.h>

作用:

导入函数声明

类似:

  • Java import
  • Python import

25. C 的编译过程




6

.c源文件 ↓ 预处理 ↓ 编译 ↓ 汇编 ↓ 链接 ↓ 可执行文件

26. GCC 编译

Linux/macOS

gcc main.c-oapp

运行:

./app

Windows(MinGW)

gcc main.c-oapp.exe

27. C 最特殊的地方(重点)

① 指针

这是 C 的灵魂。

int*p;

很多现代语言都把这个东西隐藏了。


② 手动内存管理

malloc()free()

程序员自己管理内存。

优点:

  • 极致性能
  • 极致控制

缺点:

  • 容易内存泄漏
  • 容易崩溃

③ 非常接近硬件

C 可以:

  • 操作内存
  • 操作寄存器
  • 操作CPU
  • 写驱动
  • 写操作系统

④ 没有真正的“高级特性”

C 没有:

  • 类
  • 泛型
  • 反射
  • GC垃圾回收
  • async/await

因此:

简单 但底层

28. C 与其它语言的关系




5

很多语言语法都来自 C:

语⁠言与 C 的⁠关⁠系
C++C 的⁠扩⁠展
Java模⁠仿 C 语⁠法
Go简⁠化⁠版 C 风⁠格
Rust安⁠全⁠版 C
JavaScriptC 风⁠格⁠语⁠法

29. 学习 C 最重要的几个概念

建议重点掌握:

  1. 指针
  2. 内存
  3. 数组
  4. 函数
  5. struct
  6. 编译过程
  7. malloc/free

30. 一句话总结

C 语言的本质:

“用最少的抽象, 直接控制计算机硬件。”

它既是:

  • 现代编程语言之父

也是:

  • 操作系统世界的基础语言。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 1:53:46

TongWeb8生产环境配置规范之三:优化TongWeb启动速度

除硬件资源本身的性能外&#xff0c;通过优化TongWeb8.0相关参数&#xff0c;也可以提高TongWeb和应用的启动速度。主要参数如下&#xff1a;1. 全局配置->轻量模式说明&#xff1a;以轻量模式运行 TongWeb&#xff0c;此模式会在原版本的基础上关闭 EJB、JCA 等服务&#x…

作者头像 李华
网站建设 2026/10/28 1:53:00

ORB-SLAM3 cv::Point3f KannalaBrandt8::unproject(const cv::Point2f p2D)

该函数是 Kannala-Brandt 鱼眼相机模型的反投影:输入像素坐标 (u,v)(u,v),输出相机坐标系下 z=1z=1 归一化平面上的三维点。内部用牛顿迭代求解径向畸变多项式的逆。 cv::Point3f KannalaBrandt8::unproject(const cv::Point2f &p2D) { // 参数: // p2D:像素坐标 (u,…

作者头像 李华
网站建设 2026/10/28 1:51:55

C语言入门,深入理解指针(6)

前言 本文面向已经掌握 C 语言基础语法、正在准备笔试面试或想彻底搞懂「数组与指针」的同学。如果你曾被 sizeof 和 strlen 的输出结果绕晕&#xff0c;或者看到 &a 1、*(*(a 1) 1) 这类表达式就头皮发麻&#xff0c;那么这篇文章正是为你准备的。 本文覆盖的知识点包…

作者头像 李华
网站建设 2026/10/28 1:51:55

非谓语动词的含义

非谓语动词是英语语法中较难的内容&#xff0c;非谓语动词形式多样&#xff0c;位置随意&#xff0c;容易和谓语动词混淆&#xff0c;影响我们判断句子的主干。那么到底什么是非谓语动词呢&#xff1f;非谓语动词怎么使用&#xff1f;一、非谓语动词的定义顾名思义&#xff0c;…

作者头像 李华