「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 简介

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高速服务区智慧公厕管理系统引导屏UI界面展示

在现代社会&#xff0c;高速服务区作为人们出行途中的重要休憩场所&#xff0c;其各项设施的智能化水平也在不断提升。其中&#xff0c;智慧公厕管理系统的出现&#xff0c;为人们带来了更加便捷、舒适的如厕体验&#xff0c;而引导屏 UI 界面更是这一系统的重要展示窗口。 智慧…

mdk 编程入门:探索编程世界的神秘之旅

mdk 编程入门&#xff1a;探索编程世界的神秘之旅 在科技日新月异的今天&#xff0c;编程已成为一项不可或缺的技能。MDK编程作为其中的一员&#xff0c;以其独特的魅力和广泛的应用领域吸引着越来越多的初学者。那么&#xff0c;如何入门MDK编程呢&#xff1f;本文将带你走进…

Python | Leetcode Python题解之第126题单词接龙II

题目&#xff1a; 题解&#xff1a; class Solution:def findLadders(self, beginWord: str, endWord: str, wordList: List[str]) -> List[List[str]]:ans []if endWord not in wordList:return anssize len(beginWord)cur_word_set {beginWord}ws set(wordList)# 用于…

MySQL开发教程和具体应用案例

一、MySQL开发教程 初识数据库 定义:数据仓库,安装在操作系统之上,用于存储和管理数据。 分类:关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如Redis、MongoDB)。 SQL:结构化查询语言,用于管理和操作关系型数据库。 操作数据库 创建、修改、删除…

【LeetCode 637】二叉树的层平均值

1. 题目 2. 分析 没啥好说的&#xff0c;这题很简单&#xff0c;希望能在5min内搞定。遇到问题要快速排查&#xff0c;不要怀疑编译器。 3. 代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # …

nacos配置发布流程代码示例

在 Nacos 中发布配置通常不需要直接编写代码&#xff0c;而是通过 Nacos 的管理界面或者使用 Nacos 提供的客户端 SDK 来完成。不过&#xff0c;如果想要通过编程的方式来发布配置&#xff0c;可以使用 Nacos 的客户端 SDK。 以下是一个使用 Java 和 Nacos 客户端 SDK 发布配置…

如何在 Linux VPS 上自定义你的 Bash 提示符

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 在管理 Linux 服务器时,您将花费大量时间使用命令行。对于大多数人来说,这意味着与 Bash shell 一起花费大量时间。 虽然大多数发行版为用户和 root 提供了合理…

WPF Binding对象、数据校验、数据转换

在WinForm中&#xff0c;我们要想对控件赋值&#xff0c;需要在后台代码中拿到控件对象进行操作&#xff0c;这种赋值形式&#xff0c;从根本上是无法实现界面与逻辑分离的。 在WPF中&#xff0c;微软引入了Binding对象&#xff0c;通过Binding&#xff0c;我们可以直接将控件与…

CSS双飞翼布局

双飞翼布局是一种经典的CSS布局模式&#xff0c;主要用于实现左右两列固定宽度&#xff0c;中间列自适应的布局。 比如&#xff1a;写一个左中右布局占满全屏&#xff0c;其中左、右两块固定宽 200px&#xff0c;中间自适应&#xff0c;要求先加载中间块。 <!DOCTYPE html…

启动u盘恢复成普通u盘

DiskUtility&#xff08;磁盘工具&#xff09;恢复可启动U盘为普通存储设备。点击顶部菜单栏的"抹掉"按钮。 u盘启动盘怎么恢复成u盘

Re0:从零开始的C++游戏开发【中】

Re0:从零开始的C游戏开发 &#xff08;中&#xff09; 这是蒟蒻观看B站upVoidmatrix的课程从零开始的提瓦特幸存者的个人笔记【自用】 前言&#xff1a;采用适用于小白的easyx图形库。 第三集 提瓦特の幸存者 3.1 程序动画实现及角色移动 在开始之前&#xff0c;我们应该认…

如何使用Dora SDK完成Fragment流式切换和非流式切换

我想大家对Fragment都不陌生&#xff0c;它作为界面碎片被使用在Activity中&#xff0c;如果只是更换Activity中的一小部分界面&#xff0c;是没有必要再重新打开一个新的Activity的。有时&#xff0c;即使要更换完整的UI布局&#xff0c;也可以使用Fragment来切换界面。 何…

ArrayList和LinkedList对比,ArrayList使用注意事项

ArrayList和LinkedList对比&#xff0c;ArrayList使用注意事项 ArrayList 和 LinkedList 是 Java 中常用的两种集合类&#xff0c;它们在内部实现和性能上有一些重要的区别。 ArrayList: ArrayList 是基于动态数组实现的。它内部使用一个数组来存储元素&#xff0c;当数组空间…

Vue3实战笔记(59)—从零开始掌握Vue3插槽机制,进阶与提高

文章目录 前言一、具名插槽二、高级列表组件示例总结 前言 接上文&#xff0c;接下来看一点稍微复杂的&#xff1a;具名插槽 一、具名插槽 子组件 MyComponent.vue&#xff1a; <template><div><slot name"header"></slot><slot><…

点到线段的最短矩离 及垂足的计算

过P做MN的垂线&#xff0c;垂足为Q&#xff0c;若Q在线段MN以内(包括与点M点N重合)&#xff0c;则最短距离为垂线段长度&#xff0c;若垂足在MN以外&#xff0c;则最短距离为PM&#xff0c;PN中的较小者。&#xff08;若P与MN共线&#xff0c;垂线长度为零&#xff0c;同样适用…

[机器学习] 低代码机器学习工具PyCaret库使用指北

PyCaret是一个开源、低代码Python机器学习库&#xff0c;能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具&#xff0c;极大地加快了实验周期&#xff0c;提高了工作效率。PyCaret本质上是围绕几个机器学习库和框架&#xff08;如scikit-learn、XGBoost、L…

每天半小时,让大脑变得更聪明

晚上好。 今天的文章&#xff0c;我想跟你分享一套简单又有效的「大脑保健操」。每天只需要很短的时间&#xff0c;就能有效地锻炼和强化你的脑力。 这些都是我践行了许多年的习惯&#xff0c;也有切实的实验和理论基础作为依托。 你不需要每天都完全按照这套模式来执行&#x…

Kafka篇:Kafka搭建、使用、及Flink整合Kafka文档

一、Kafka搭建 1、上传并解压改名 tar -xvf kafka_2.11-1.0.0.tgz mv kafka_2.11-1.0.0 kafka-1.0.0 2、配置环境变量 vim /etc/profile export KAFKA_HOME/usr/local/soft/kafka-1.0.0 export PATH$PATH:$KAFKA_HOME/bin source /etc/profile &#xff08;使环境变量生效…

机器学习学习

机器学习类型(按学习方式分):监督学习、半监督学习、无监督学习、强化学习; 通过已知标签训练集训练模型,使用模型及逆行预测、测试; 向量表示法,其中每一维对应一个特征(feature)或者称为属性,记为[x1,x2,...,xn] 特征值、特征、标签,共同完成训练集的数据填充,最…

Linux C/C++ gdb调试正在运行的程序

启动程序&#xff0c;在新窗口进行如下操作 进程编号 ps -ef | grep 程序名[rootlocalhost 04demo]# ps -ef | grep core_demo root 2467 1657 0 23:56 pts/0 00:00:00 ./core_demo root 2703 2540 0 23:57 pts/1 00:00:00 grep --colorauto core_dem…