2. C语言 基础语法

本章目录:

    • 前言
    • 1. C 语言的基础结构
      • 1.1 C 程序的基本构成
      • 1.2 一个简单的 C 程序实例
      • 1.3 复杂的 C 程序结构
    • 2. C 语言的基本构成单元
      • 2.1 关键字
        • 标准关键字
        • C99 新增关键字
        • C11 新增关键字
      • 2.2 标识符
      • 2.3 常量
      • 2.4 注释
    • 3. 语句与表达式
      • 3.1 语句
      • 3.2 表达式
    • 4. 分隔符与空格
      • 4.1 分隔符
      • 4.2 空格与空白符


前言

C 语言是一种经典的通用编程语言,凭借其高效、灵活、可移植性强的特点,在系统编程、嵌入式开发和高性能计算等领域得到了广泛应用。作为许多现代编程语言的基础,掌握 C 语言的基本语法是学习其他编程语言的关键。

本文将从 C 语言的基础语法出发,详细讲解其核心概念,帮助读者理解并掌握 C 语言的编程技巧。


1. C 语言的基础结构

1.1 C 程序的基本构成

每个 C 程序都由若干部分组成,最基本的结构包括:

  1. 头文件引用:通过 #include 指令包含必要的库文件,以便使用预定义的函数。
  2. 宏定义:使用 #define 定义常量或代码片段,供程序使用。
  3. 主函数:每个 C 程序都必须包含一个 main() 函数,这是程序执行的入口。
  4. 变量声明:在函数中声明并初始化变量。
  5. 函数定义:定义程序所需的函数,以实现具体功能。

1.2 一个简单的 C 程序实例

#include <stdio.h>  // 引入标准输入输出库int main() {printf("Hello, World!\n");  // 输出一行文字return 0;  // 返回 0,表示程序成功执行
}

解释

  • #include <stdio.h>:引入标准输入输出库,使用 printf 函数。
  • int main()main 函数是程序的入口点,返回 0 表示程序正常执行结束。
  • printf:标准库函数,用于输出文本。

1.3 复杂的 C 程序结构

一个稍微复杂的 C 程序可能包含更多的功能,比如输入输出、函数调用等:

#include <stdio.h>  // 引入标准输入输出库#define PI 3.14159   // 定义常量 PI// 函数声明
int add(int a, int b);int main() {int num1, num2, sum;  // 变量声明// 用户输入printf("Enter two integers: ");scanf("%d %d", &num1, &num2);// 函数调用sum = add(num1, num2);// 输出结果printf("Sum: %d\n", sum);return 0;  // 返回 0,表示程序成功执行
}// 函数定义
int add(int a, int b) {return a + b;
}

解释

  • #define PI 3.14159:定义了一个常量 PI,在程序中可以随时使用。
  • scanf:用来从标准输入获取用户输入。
  • add:一个自定义的函数,用于计算两个整数的和。

2. C 语言的基本构成单元

C 语言的程序由多种不同的构成单元(称为令牌)组成。每个令牌都有特定的功能,编译器通过对代码进行词法分析,将源代码分解成一个个令牌。C 语言中的令牌主要有以下几种类型:

  • 关键字(Keywords)
  • 标识符(Identifiers)
  • 常量(Constants)
  • 字符串字面量(String Literals)
  • 运算符(Operators)
  • 分隔符(Separators)

2.1 关键字

C 语言有一组保留字,称为关键字,它们是语言的基础语法单位,具有特定的含义。以下是 C 语言的关键字列表:

标准关键字
autobreakcasecharconstcontinuedefaultdo
doubleelseenumexternfloatforgotoif
intlongregisterreturnshortsignedsizeofstatic
structswitchtypedefunionunsignedvoidvolatilewhile
C99 新增关键字
inlinerestrict_Bool_Complex_Imaginary
C11 新增关键字
_Alignas_Alignof_Atomic_Static_assert_Noreturn
_Thread_local_Generic
--------------------------------------------------------

关键字的使用
关键字在程序中有固定的含义,因此不能作为标识符(如变量名或函数名)使用。关键字定义了程序控制流、数据类型、存储类型等。

2.2 标识符

标识符是程序中变量、函数、数组等的名称。C 语言的标识符命名规则如下:

  1. 标识符只能由字母(A-Z、a-z)、数字(0-9)和下划线(_)组成,但第一个字符不能是数字。
  2. C 语言对标识符的大小写敏感,因此 variableVariable 是不同的标识符。
  3. 标识符不能使用关键字名称。

有效的标识符例子

  • total_sum
  • averageScore
  • _temp
  • result1

2.3 常量

常量是指程序运行期间其值不可改变的数据。常量有多种类型,主要包括:

  • 整型常量:如 10-5
  • 浮点型常量:如 3.14-0.5
  • 字符常量:如 'a''1'
  • 字符串常量:如 "Hello, World!"

声明常量的方式通常使用 const 关键字:

const int MAX_SIZE = 100;  // 整型常量
const float PI = 3.14159;  // 浮点型常量
const char NEWLINE = '\n';  // 字符常量

2.4 注释

C 语言支持两种类型的注释:

  1. 单行注释:以 // 开始,注释内容直到行尾。

    // 这是一个单行注释
    
  2. 多行注释:以 /* 开始,以 */ 结束,可以跨越多行。

    /*这是一个多行注释可以写很多行
    */
    

注意

  • 注释不能嵌套,即不能在一个注释中再使用注释符号。
  • 注释对程序的执行没有影响,它们仅用于代码说明。

3. 语句与表达式

在 C 语言中,语句是执行单元,而表达式是由运算符、变量和常量组成的表达式片段。

3.1 语句

C 语言中的语句包括:

  • 表达式语句:如赋值语句、函数调用语句。

    sum = a + b;
    printf("Hello, World!\n");
    
  • 控制语句:如条件语句和循环语句。

    if (x > y) {printf("x is greater than y");
    }
    

3.2 表达式

表达式是由操作数(常量、变量)和运算符组成的运算单位。常见的运算符包括:

  • 算术运算符+-*/%
  • 关系运算符==!=><>=<=
  • 逻辑运算符&&||!

例如:

int a = 5, b = 10;
int sum = a + b;  // 使用算术运算符 +

4. 分隔符与空格

4.1 分隔符

C 语言中的分隔符用于分隔语句、表达式或声明。常见的分隔符包括:

  • 逗号(,):分隔变量或函数参数。
  • 分号(;):结束语句。
  • 括号(()):分组表达式或函数调用。
  • 花括号({}):定义代码块。
  • 方括号([]):表示数组下标。

4.2 空格与空白符

空格在 C 语言中主要用来分隔关键字、标识符和操作符等,帮助编译器识别

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

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

相关文章

xadmin后台首页增加一个导入数据按钮

xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang

arcgis模版空库怎么用(一)

这里以某个项目的数据为例&#xff1a; 可以看到&#xff0c;属性表中全部只有列标题&#xff0c;无数据内容 可能有些人会认为空库是用来往里面加入信息的&#xff0c;其实不是&#xff0c;正确的用法如下&#xff1a; 一、下图是我演示用的数据&#xff0c;我们可以看到其中…

GJB系统设计说明模板

GJB系统设计说明模板及详解 1 范围 1.1 标识 1.2 系统概述 1.3 文档概述 2 引用文档 GJB XXX XXX XXX&#xff1b; XXX XXX。 前2章通用不再赘述 3 系统级设计决策 系统设计决策的目的:对系统规格说明中的关键需求(包括功能、质量属性和设计约束)进行分析,得到系统级概念性架构…

某小程序sign签名参数逆向分析

文章目录 1. 写在前面2. 接口分析3. 分析还原 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…

2000-2020年各省财政一般预算支出面板数据

2000-2020年各省财政一般预算支出面板数据 1、时间&#xff1a;2000-2020年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;年份、省份、地方财政一般预算支出 4、范围&#xff1a;31省 指标解释&#xff1a;地方财政一般预算支出‌是指地方ZF根据预算安排&#xff0…

[羊城杯 2024]1z_misc

得到FL4G.zip和天机不可泄露.txt文件&#xff0c;其中压缩包需要解压密码&#xff1a; 二十八星宿&#xff1a; 东方苍龙七宿&#xff1a;角、亢、氐、房、心、尾、箕 南方朱雀七宿&#xff1a;鬼、井、柳、星、张、翼、轸 西方白虎七宿&#xff1a;奎、娄、胃、昴、毕、觜、…

右值引用全面剖析

为什么要有右值引用&#xff0c;右值引用出现前程序员们的困境&#xff1a; 在右值引用出现以前&#xff0c;想要把一块内存空间里的内容放到另一块内存空间&#xff0c;只能再开辟一块内存&#xff0c;然后将原来内存里的内容复制到新开辟的内存里&#xff0c;然后再把原来的…

mac下载Homebrew安装nvm

通过Homebrew安装 - 国内下载地址 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"安装nvm brew install nvm 配置nvm环境变量 export NVM_DIR“$HOME/.nvm” [ -s “/usr/local/opt/nvm/nvm.sh” ] && . “/usr/…

解决chatgpt(mac app登陆)出现报错:获取您的 SSO 信息时出错

由于我们是app登陆的&#xff0c;不能直接修改网站的链接&#xff0c;将 URL 的域名部分从 auth.openai.com 变更为 auth0.openai.com&#xff0c;然后加载新的地址&#xff0c;这时候应该就可以正常登录或注册了。 所以我们使用邮箱先载入auth0的地址&#xff0c;再更改自己的…

C#编写的盘符图标修改器 - 开源研究系列文章

这天在网上遇到一个Windows的盘符图标修改软件&#xff0c;但是它那个是.net framework 2.0的&#xff0c;所以就将其改成4.8.1的了&#xff0c;用于Windows 11等默认不安装2.0库的操作系统里使用。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 它直接进行注册表的修改…

【第二部分--Python之基础】03 容器类型的数据

Python内置的数据类型如序列&#xff08;列表、元组等&#xff09;、集合和字典等可以容纳多项数据&#xff0c;我们称它们为容器类型的数据。 序列 序列&#xff08;sequence&#xff09;是一种可迭代的、元素有序的容器类型的数据。 序列包括列表&#xff08;list&#xff…

HTML5实现好看的二十四节气网页源码

HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 关于我们界面1.3 春季节气界面1.4 夏季节气界面1.5 秋季节气界面1.6 冬季节气界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的二十四节气网页源码&#xff0c;春季节气&#xf…

走进深圳华为总部参观研学

在这个科技日新月异的时代&#xff0c;每一次与行业标杆企业领先者对话&#xff0c;都是开眼界的好时机。华研标杆游学高老师组织了一场企业家参访团体考察&#xff0c;带大家去到深圳华为总部研学&#xff0c;亲身感受科技巨头的风采&#xff0c;一起探讨未来的发展。 第一站-…

【unity错误】Unity 6 LTS 打开就报错Assertion failed on expressionxxx?

unity6发布已经有一段时间了&#xff0c;如果目前你已经使用了unity6进行项目开发&#xff0c;可能打开会发现如下报错 Assertion failed on expression: ‘!(o->TestHideFlag(Object::kDontSaveInEditor) && (options & kAllowDontSaveObjectsToBePersistent) …

集线器,交换机,路由器,mac地址和ip地址知识记录总结

一篇很不错的视频简介 基本功能 从使用方面来说&#xff0c;都是为了网络传输的标识&#xff0c;和机器确定访问对象 集线器、交换机和路由器 常听到路由器和集线器&#xff0c;下面是区别&#xff1a; 集线器 集线器&#xff1a;一个简单的物理扩展接口数量的物理硬件。…

【ArcGISPro/GeoScenePro】检查并处理高程数据

数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…

《计算机组成及汇编语言原理》阅读笔记:p177-p177

《计算机组成及汇编语言原理》学习第 13 天&#xff0c;p177-p177 总结&#xff0c;总计 1 页。 一、技术总结 1.real mode A programming model where the program has access to the entire capability of the machine, bypassing security and memory management. Useful…

珞珈一号夜光遥感数据地理配准,栅格数据地理配准

目录 一、夜光数据下载&#xff1a; 二、夜光遥感数据地理配准 三、计算夜光数据值 四、辐射定标 五、以表格显示分区统计 五、结果验证 夜光数据位置和路网位置不匹配&#xff0c;虽然都是WGS84坐标系&#xff0c;不匹配&#xff01;&#xff01;&#xff01;不要看到就直接…

python学习笔记—12—

1. 布尔类型 (1) 定义 (2) 比较运算符 (3) 代码演示 1. 手动定义 bool_1 True bool_2 False print(f"bool_1的内容是&#xff1a;{bool_1}, 类型是&#xff1a;{type(bool_1)}") print(f"bool_2的内容是&#xff1a;{bool_2}, 类型是&#xff1a;{type(bool…

Redis 使用redisTemplate获取某个规则下的key的全量数据(示例Set结构)

如下是redis中存储的数据结构 我想取key以favorites:结尾的所有数据 Redis 的 SCAN 命令用于迭代数据库中的键&#xff0c;支持通过模式过滤结果。模式规则基于 Redis 的通配符匹配语法&#xff0c;类似于文件名匹配规则&#xff1a; *&#xff1a;匹配零个或多个字符。?&…