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

「C系列」C 基本语法

文章目录

  • 一、C 基本语法
    • 1. **程序结构**
    • 2. **数据类型**
    • 3. **变量声明**
    • 4. **运算符**
    • 6. **函数**
    • 7. **指针**
    • 8. **数组**
    • 9. **结构体和联合体**
    • 10. **预处理指令**
    • 11. **内存管理**
  • 二、C 关键字
    • 1. 整体概览
    • 2. 具体关键字
      • 数据类型关键字
      • 控制流关键字
      • 其他关键字
      • C11新增关键字
      • 总结
  • 三、相关链接

一、C 基本语法

C语言是一种通用的、过程式的计算机编程语言,它支持结构化编程、词汇变量作用域和递归,并且它的设计提供了低级别的存取,允许程序员直接操作内存。以下是C语言的一些基本语法和概念:

1. 程序结构

C语言程序由以下部分组成:

* 预处理命令(如 `#include`)
* 函数定义
* 变量声明
* 主函数(`main()`)

一个简单的C程序示例:

#include <stdio.h>int main() {printf("Hello, World!\n");return 0;
}

2. 数据类型

C语言支持多种数据类型,如:

* 整数:`int`, `short`, `long`, `long long`
* 浮点数:`float`, `double`, `long double`
* 字符:`char`
* 布尔值(C99开始):`_Bool` 或 `bool`(在 `<stdbool.h>` 中定义)
* 枚举(enum)
* 指针
* 结构体(struct)
* 联合体(union)
* 数组
* 空类型(void)

3. 变量声明

在C语言中,必须先声明变量才能使用它。声明变量时,需要指定其类型。

int a; // 声明一个整型变量a
double b; // 声明一个双精度浮点型变量b

4. 运算符

C语言支持多种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。
5. 控制流语句

C语言使用控制流语句来控制程序的执行流程。这些语句包括:

* 条件语句(`if`, `else`, `switch`)
* 循环语句(`for`, `while`, `do-while`)
* 跳转语句(`break`, `continue`, `goto`, `return`)

6. 函数

函数是C语言程序的基本组成部分。一个函数执行特定的任务,并可能返回一个值。函数定义的一般形式为:

返回类型 函数名(参数列表) {// 函数体
}

7. 指针

指针是C语言中非常重要的概念。指针是一个变量,其值是一个内存地址。通过指针,我们可以直接访问和操作内存。

8. 数组

数组是一种数据结构,用于存储相同类型的多个元素。在C语言中,数组元素通过索引访问。

9. 结构体和联合体

结构体是一种复合数据类型,允许你将多个不同类型的数据项组合成一个单独的数据类型。联合体是另一种复合数据类型,它允许你在相同的内存位置存储不同的数据类型。

10. 预处理指令

C语言支持预处理指令,如 #include, #define 等。这些指令在编译之前由预处理器处理。

11. 内存管理

C语言提供了对内存的直接访问和控制,因此程序员需要负责内存的分配和释放。这通常通过 malloc(), calloc(), realloc()free() 等函数实现。

二、C 关键字

1. 整体概览

C语言中的关键字(Keywords)是预定义的、具有特殊含义的标识符,它们不能被用作变量名、函数名或其他标识符。以下是C语言中的关键字列表(注意,这个列表可能会因C语言标准的不同而略有差异,但以下是最常见的关键字):

auto         break        case         char         const
continue     default      do           double       else
enum         extern       float        for          goto
if           inline       int          long         register
restrict     return       short        signed       sizeof
static       struct       switch       typedef      union
unsigned     void         volatile     while        _Alignas
_Alignof     _Atomic      _Bool        _Complex     _Generic
_Imaginary   _Noreturn    _Static_assert _Thread_local (C11 及以后)

这些关键字在C语言中有着特定的用途和上下文。例如,int 用于声明整数类型的变量,forwhile 用于循环控制,if 用于条件判断,return 用于从函数中返回值,等等。

在C11及以后的版本中,增加了一些新的关键字,如 _Alignas_Alignof_Atomic_Bool_Complex_Generic_Imaginary_Noreturn_Thread_local,它们提供了对C语言更高级特性的支持,如对齐控制、原子操作、布尔类型、复数类型、泛型选择、虚数类型、非返回函数和线程局部存储等。

请注意,关键字是区分大小写的,因此 IntifIF 在C语言中具有不同的含义(其中只有 if 是关键字)。在编写C语言程序时,应避免使用这些关键字作为标识符,以免导致编译错误。

2. 具体关键字

C语言的关键字在编程中扮演着非常重要的角色,它们具有特定的功能和用途。以下是C语言中的关键字及其详细案例的说明:

数据类型关键字

  1. char:声明字符型变量或函数返回值类型
    • 案例:char ch = 'A'; 声明一个字符变量ch并初始化为字符’A’。
  2. double:声明双精度浮点型变量或函数返回值类型
    • 案例:double pi = 3.14159; 声明一个双精度浮点型变量pi并初始化为π的近似值。
  3. int:声明整型变量或函数
    • 案例:int age = 25; 声明一个整型变量age并初始化为25。
  4. float:声明浮点型变量或函数返回值类型
    • 案例:float salary = 5000.0; 声明一个浮点型变量salary并初始化为5000.0。

控制流关键字

  1. if:条件语句
    • 案例:if (age >= 18) { printf("Adult\n"); } 如果age大于或等于18,则输出"Adult"。
  2. for:循环语句
    • 案例:for (int i = 0; i < 10; i++) { printf("%d ", i); } 打印0到9的数字。
  3. while:循环语句的循环条件
    • 案例:int i = 0; while (i < 10) { printf("%d ", i); i++; } 与for循环实现相同的功能。
  4. do-while:循环语句,至少执行一次循环体
    • 案例:int i = 0; do { printf("%d ", i); i++; } while (i < 10); 同样打印0到9的数字。
  5. switch:开关语句
    • 案例:switch (grade) { case 'A': printf("Excellent\n"); break; ... } 根据grade的值输出不同的评价。
  6. break:跳出当前循环或switch语句
    • 案例:在switch语句或循环中使用,如上面的switch案例。
  7. continue:结束当前循环,开始下一轮循环
    • 案例:for (int i = 0; i < 10; i++) { if (i == 5) continue; printf("%d ", i); } 跳过数字5的打印。

其他关键字

  1. return:子程序返回语句
    • 案例:在函数中返回一个值,如int sum(int a, int b) { return a + b; }
  2. void:声明函数无返回值或无参数,声明无类型指针
    • 案例:void printMessage() { printf("Hello, World!\n"); } 声明一个无返回值的函数。
  3. static:声明静态变量
    • 案例:static int count = 0; 声明一个只在当前文件内可见的静态变量。
  4. struct:声明结构体类型
    • 案例:struct Person { char name[50]; int age; }; 声明一个名为Person的结构体。
  5. enum:声明枚举类型
    • 案例:enum Days { Sunday, Monday, Tuesday, ... }; 声明一个名为Days的枚举类型。
  6. typedef:用以给数据类型取别名
    • 案例:typedef int Integer; 之后可以使用Integer作为int的别名。

C11新增关键字

C11标准新增了一些关键字,如_Alignas_Alignof_Atomic等,这些关键字提供了对C语言更高级特性的支持,但在这里不详细展开。

总结

C语言的关键字在编程中扮演着至关重要的角色,它们定义了程序的基本结构和行为。上述案例仅展示了部分关键字的用法,实际上每个关键字都有其独特的用途和上下文。在实际编程中,应根据需要合理地使用这些关键字。

三、相关链接

  1. Visual Studio Code下载地址
  2. Sublime Text下载地址
  3. 「C系列」C 简介

相关文章:

「C系列」C 基本语法

文章目录 一、C 基本语法1. **程序结构**2. **数据类型**3. **变量声明**4. **运算符**6. **函数**7. **指针**8. **数组**9. **结构体和联合体**10. **预处理指令**11. **内存管理** 二、C 关键字1. 整体概览2. 具体关键字数据类型关键字控制流关键字其他关键字C11新增关键字总…...

java期末细节知识整理(一)

1.java程序的执行过程&#xff1a;先编译后解释。也就是我们在idea写的文件叫做java源文件&#xff08;.java结尾的文件&#xff09;&#xff0c;经过编译器会生成字节码文件&#xff08;.class结尾的文件&#xff09;&#xff0c;再通过解释器进行实现 2.栈用来存储引用类型的…...

GIt快速入门(一文学会使用Git)

GIt快速入门 文章目录 GIt快速入门一、为什么要学习Git二、Git的安装1.安装Git2.下载GUI 三、Git的概念1、版本控制2、集中式控制3、分布式控制4、多人协作开发1.并行开发2.分支管理3.冲突解决4.代码审查5.分布式特性 四、Git客户端操作1.界面介绍2.提交操作3.创建分支4.合并分…...

电机测试方法的介绍与功能实现(T测试方法)

目录 概述 1 理论介绍 2 实现原理 2.1 旋转式编码器原理 2.2 系统实现框图 2.3 测速原理 2.4 计算速度值 3 STM32Cube配置项目 3.1 软件版本信息 3.2 配置项目 4 代码实现 4.1 电机速度控制 4.2 速度计算函数 4.3 功能实现 5 测试 概述 本文主要介绍测试电机速…...

多线程和多进程的快速入门

多线程和多进程的快速入门 学习自&#xff1a;莫烦Python www.mofanpy.com Threading - 多线程运算python程序 ​ 多线程的简单理解&#xff1a;把数据分成很多段&#xff0c;将每一段数据放入一个线程&#xff0c;将所有的线程同时开始&#xff0c;大大的节省了运算时间。相…...

【TensorFlow深度学习】经典卷积网络架构回顾与分析

经典卷积网络架构回顾与分析 经典卷积网络架构回顾与分析&#xff1a;从AlexNet到ResNet、VGGLeNet、ResNet、DenseNet的深度探索AlexNet ——深度学习的破冰点火VGGNet — 简洁的美ResNet — 深持续深度的秘钥DenseNet — 密集大成塔实战代码示例&#xff1a;ResNet-50模型结语…...

Salesforce推出Einstein 1 Studio:用于自定义Einstein Copilot并将人工智能嵌入任何CRM应用程序的低代码人工智能工具

一、关键要点 1. Salesforce管理员和开发人员现在可以在每个Salesforce应用程序和工作流程中构建、定制和嵌入人工智能&#xff0c;包括Einstein Copilot。 2. Einstein 1 Studio与数据云深度集成&#xff0c;通过对客户数据和元数据的全面理解&#xff0c;解锁并统一被捕获的…...

点赋科技:建设智能饮品高地,打造数字化产业先锋

在当今数字化时代的浪潮中&#xff0c;点赋科技以其敏锐的洞察力和卓越的创新能力&#xff0c;致力于建设智能饮品高地&#xff0c;打造数字化产业先锋。 点赋深知智能饮品机对于推动社会进步和满足人们日益增长的需求的重要性。因此&#xff0c;他们投入大量资源和精力&#x…...

ORACLE RAC的一些基本理论知识

一 . Oracle RAC 的发展历程 1. Oracle Parallel Server (OPS) 早期阶段&#xff1a;Oracle 6 和 7 Oracle Parallel Server&#xff08;OPS&#xff09;是 Oracle RAC 的前身。 通过多个实例并行访问同一个数据库来提高性能。 共享磁盘架构&#xff0c;利用分布式锁管理&am…...

CMake的作用域:public/private/interface

在 CMake 中&#xff0c;public、private和 interface是用来指定目标属性的作用域的关键字&#xff0c;这三个有什么区别呢&#xff1f;这些关键字用于控制属性的可见性和传递性&#xff0c;影响了目标之间的依赖关系和属性传递。 public 如果在一个目标上使用 public关键字时…...

设计模式基础知识点(七大原则、UML类图)

Java设计模式&#xff08;设计模式七大原则、UML类图&#xff09; 设计模式的目的设计模式七大原则单一职能原则&#xff08;SingleResponsibility&#xff09;接口隔离原则&#xff08;InterfaceSegreation&#xff09;依赖倒转原则&#xff08;DependenceInversion&#xff0…...

Android开机动画的结束过程BootAnimation(基于Android10.0.0-r41)

文章目录 Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) 路径frameworks/base/cmds/bootanimation/bootanimation_main.cpp init进程把我们的BootAnimation的二进制文件拉起来了&#xf…...

微软远程连接工具:Microsoft Remote Desktop for Mac 中文版

Microsoft Remote Desktop 是一款由微软开发的远程桌面连接软件&#xff0c;它允许用户从远程地点连接到远程计算机或虚拟机&#xff0c;并在远程计算机上使用桌面应用程序和文件。 下载地址&#xff1a;https://www.macz.com/mac/5458.html?idOTI2NjQ5Jl8mMjcuMTg2LjEyNi4yMz…...

【安规介绍】

文章目录 一、基础知识安规上的六类危险的防护&#xff1a;安全电压漏电流接触电流能量问题&#xff1a;火灾问题&#xff1a;热问题结构问题阻燃等级绝缘等级&#xff1a;对接地系统的要求&#xff1a;结构要求:电气要求&#xff1a; 二、设计的关键电气绝缘距离电气爬电距离:…...

[sylar]后端学习:配置环境(一)

1.介绍 基于sylar大神的C高性能后端网络框架来进行环境配置和后续学习。网站链接&#xff1a;sylar的Linux环境配置 2.下载 按照视频进行下载&#xff0c;并进行下载&#xff0c;并最好还要下载一个vssh的软件。可以直接在网上搜索即可。 sylar_环境配置&#xff0c;vssh下…...

XDMA原理及其应用和发展

XDMA原理 XDMA的主要原理是通过直接访问主机内存&#xff0c;实现数据的快速传输。在传统的DMA&#xff08;Direct Memory Access&#xff09;技术中&#xff0c;数据传输需要经过CPU的干预&#xff0c;而XDMA可以绕过CPU&#xff0c;直接将数据从外设读取到主机内存或者从主机…...

携程梁建章:持续投资创新与AI,开启旅游行业未来增长

5月30至31日&#xff0c;携程集团在上海和张家界举办Envision 2024全球合作伙伴大会&#xff0c;邀请超50个国家和地区的1600余名外籍旅游业嘉宾与会&#xff0c;共同探讨中国跨境旅游市场发展机遇&#xff0c;讲好中国故事。 携程国际业务增速迅猛&#xff0c;创新与AI解锁未…...

【网络安全的神秘世界】在win11搭建pikachu靶场

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 下载pikachu压缩包 https://github.com/zhuifengshaonianhanlu/pikachu 下载好的pikachu放在phpstudy_pro/www目录下 创建pikachu数据库 打开phpstudy软件…...

基于Java的零食管理系统的设计与实现(论文+源码)_kaic

摘 要 随着科技的进步&#xff0c;以及网络的普及&#xff0c;都为人们的生活提供了极大的方便。因此&#xff0c;在管理”三姆”宿舍在线零食商店时&#xff0c;与现代的网络联系起来是非常必要的&#xff0c;本次设计的系统在研发过程中应用到了Java技术&#xff0c;这在一定…...

【案例实操】银河麒麟桌面操作系统实例分享,V10SP1重启后网卡错乱解决方法

1.问题现象 8 个网口&#xff0c; 命名从 eth1 开始到 eth8。 目前在系统 grub 里面加了 net.ifnames0 biosdevname0 参数&#xff0c; 然后在 udev 规则中加了一条固定网卡和硬件 pci 设备号的规则文件。 最后在 rc.local 中加了两条重新安装网卡驱动的命令&#xff08; rmmod…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...