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

第2章 C程序开发快速入门

2.1 开发工具的选择

1、Visual Studio
Visual Studio(简称 VS)是由微软公司发布的集成开发环境,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。
2、Code::Block
Code::Block是一个免费的跨平台IDE,它支持C、C++和Fortan程序的开发,Code::Block的最大特点是它支持通过插件的方式对IDE自身功能进行扩展,这使得Code::Block具有很强的灵活性,方便用户使用。
3、Clion
CLion是一款由JetBrains推出的跨平台C/C++集成开发环境(IDE),它具有智能编辑器、CMake构建支持、调试器、单元测试、代码分析等功能,可以极大提高C/C++开发效率。
4、VS Code
Visual Studio Code(简称VS Code)是一款由Microsoft开发的免费、开源的代码编辑器,它是一种轻量级但功能强大的集成开发环境(IDE),VS Code旨在提供一种优秀的编码体验,适用于各种编程语言和应用程序开发任务。<span data-type="text" style="color: var(--b3-font-color12);">VS Code 用于编辑 C 代码,我们还需要 C 编译器来运行 C 代码,所以安装 VS Code之前我们需要先安装 </span>((20250319204122-svh9omr "C 编译器"))
5、在线编辑工具

CodingGround、OnlineGDB、Lightly

6、C编译器MinGW-w64
MinGW-w64 是一个用于Windows操作系统的开发工具集,其包含了C语言编译器 GCC(GNU Compiler Collection)。

2.2 年轻人第一个C程序

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

注意:VS Code编写程序时,程序存放的路径不能包含中文

2.3 C程序运行机制流程

image

1、编写
编写C语言源程序代码,并以文件的形式存储到磁盘中,源代码文件以“.c”作为扩展名,如本项目中main.c 文件。
2、预处理
在编译之前,预处理器会处理源代码文件,主要进行一些文本上的处理,包括去掉多余的空格和注释,处理预处理指令(后面会学到),生成经过处理的源代码文件,通常带有.i扩展名。`gcc -E main.c -o main.i` 生产 main.i 文件,此为经过预处理的源文件
3、编译
编译器接受预处理后的源代码文件,并将其翻译成汇编代码,生成汇编文件,通常带有.s或.asm扩展名。`gcc -S main.i -o main.s` 生产 main.s 文件,此为汇编文件
4、汇编
汇编器将汇编代码翻译成机器码并生成一个或多个目标文件,目标文件是二进制文件,通常带有.o(在Unix-like系统上)或.obj(在Windows上)`gcc -c main.s -o main.o` 生产 main.o 文件,此为二进制文件
5、链接
链接器将多个目标文件(如果有的话)合并在一起,包括C标准库文件和其他库文件,生成最终的可执行的二进制程序(.exe 文件)。`gcc main.o -o main.exe` 生产 main.exe 文件,此为可执行文件
库文件是由系统提供,里面包括内置的标准函数和数据结构集合等,我们代码中使用的 <stdio.h> 就是标准库提供的,里面定义 printf 这个函数。链接有两种链接方式:动态链接和静态链接
6、注意事项
①C程序源文件以"c"为扩展名。
②C程序的执行入口是main() 函数。
③C语言严格区分大小写。
④C语言由一条条语句构成,每个语句以‘;’结束。

2.4 代码内容

1、注释

对代码进行解释说明,帮助理解代码的意图、功能和逻辑

(1)单行注释//

(2)多行注释/* */

2、输出内容
使用`printf()`输出内容到终端,要输出的内容需要用双引号包裹,`\n`为换行
3、变量

变量是内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。通过变量名,可以引用这块内存区域,获取里面存储的值

变量的构成包含三个要素:数据类型变量名存储的值

(1)变量的声明

#include <stdio.h>
int main()
{// 声明一个整型变量,取名为 aint a;// 对变量 a 进行赋值a = 100;// 声明一个整型变量,取名为 b,并直接赋值int b = 200;// 修改变量 b 的值, 将变量 a 的值赋值给 bb = a;// 同时声明多个整型变量并赋值int c1 = 10, c2 = 20, c3 = 30;return 0;
}

(2)输出变量

image

①格式化字符串是用双引号括起来的一个字符串,里面包括格式占位符和普通字符

②格式占位符,也叫格式声明符,由“%”和格式字符组成,作用是将输出的数据转换为指定的格式后输出,这里“%d”表示整数

③输出列表是程序需要输出的一些数据,可以是常量、变量或表达式,与格式占位符一一对应

printf("b=%d \n", b);

(3)输入数据赋值给变量

canf主要用于从标准输入(通常是键盘)读取数据并将其存储到指定的变量中(变量需要提前声明),同printf一样,位于头文件 <stdio.h> 中

image

scanf("%d", &num);需要注意的是,scanf中,变量名前面需要添加 & 符号,该符号称为取地址符

4、标识符

C语言中变量、函数、数组名、结构体等要素命名时使用的字符序列,称为标识符

(1)标识符命名规范

①强制规范:a.只能由小写或大写英文字母,0-9 或 _ 组成b.不能以数字开头c.不可以是关键字d.标识符具有长度限制,不同的编译器和平台会有所不同,一般限制在63个字符内e.严格区分大小写字母②建议规范a.为了提高阅读性,使用有意义的单词b.使用下划线连接多个单词组成的标识符,如:max_classes_per_studentc.多个单词组成的标识符,除了使用下划线连接,也可以使用小驼峰命名法,除第一个单词外,后续单词的首字母大写,如:maxClassesPerStudentd.不要出现仅靠大小写区分不同的标识符,如:name、Name容易混淆e.系统内部使用了一些下划线开头的标识符,比如,C99标准添加的类型 `_Bool`,为防止冲突,建议开发者尽量避免使用下划线开头的标识符
5、关键字

关键字是一些具有特殊含义的保留单词

ANSI C有32个关键字

类型 具体关键字
控制语句关键字(12 个) break, case, continue, default, do, else, for, goto, if, return, switch, while
数据类型关键字(12 个) char, enum, double, long, float, int, short, signed, struct, unsigned, union,void
存储类型关键字(4 个) auto, extern, register, static
其他关键字(4 个) const, sizeof, typedef, volatile

C99标准增加了5个关键字:inline、restrict、_Bool、_Complex和_Imaginary。

C11标准增加了7个关键字:_Alignas、_Alignof、_Atomic、_Static_assert、_Noreturn、_Thread_local和_Generic。

6、常量

程序运行时,其值不能改变的量

(1)分类

①字面量常量:直接使用的常量,不需要定义或声明,包括整数常量、浮点数常量、字符常量
②标识符常量,使用标识符作为常量名,包括`#define`定义的标识符常量和`const`关键字定义的标识符常量以及枚举常量

(2)使用#define定义常量

define 来定义常量,也叫作宏定义,就是用一个标识符来表示一个常量值,如果在后面的代码中出现了该标识符,那么编译时就全部替换成指定的常量值,即用宏体替换所有宏名,简称宏替换

格式:#define 常量名 常量值

注意:①不要以分号结尾,如有分号,分号会成为常量值的一部分。②#define 必须写在 main 函数的外面

(3)使用const关键字

这种方式跟定义一个变量是一样的,只需要在变量的数据类型前再加上一个const关键字。跟使用 #define定义宏常量相比,const定义的常量有详细的数据类型,而且会在编译阶段进行安全检查,在运行时才完成替换,所以会更加安全和方便

格式:const 数据类型 常量名 = 常量值;

(3)#define定义常量和const定义常量的区别

①执行时机:define是预处理指令,在编译之前执行;const是关键字,在编译过程中执行
②类型检查:define定义常量不用指定类型,不进行类型检查,只是简单地文本替换;const定义常量需指定数据类型,会进行类型检查,类型安全性更强
http://www.jsqmd.com/news/316414/

相关文章:

  • 2026年封头行业深度选购指南:宜兴市宏明机械科技有限公司
  • 2026年柴油机消防泵行业市场全景:优秀企业与头部厂商综合实力深度盘点
  • 从零到一:开启你的Java编程之旅
  • 从零到一:开启你的Go语言编程之旅
  • 粮库温湿度监控(有完整资料)
  • 深入解析:如何通过字段设计实现Git级别的版本控制
  • 我打算直接在我的app里面插入博客网站
  • android app好像是可以上架google play store赚钱
  • 测试能力正在两极分化
  • 风险驱动测试新范式
  • windows下基于openssl生成自签名证书
  • 如何通过 NVIDIA DGX A100 显卡服务器,优化 AI 医疗影像分析中的数据处理与模型推理速度?
  • 如何在CentOS 8上搭建显卡服务器并通过分布式深度学习训练提高AI模型的可扩展性与资源利用率
  • 百考通AI开题报告服务:一站式智能生成,为您的学术研究打下完美第一桩
  • ‌当测试AI遇上玄学:星座对bug分布的影响‌
  • 如何在GPU算力服务器上配置与优化深度学习框架,提升卷积神经网络(CNN)训练中的计算吞吐量?
  • 百考通AI:智能论文写作利器,开启学术科研新篇章
  • 如何在Ubuntu 20.04中使用NVIDIA RTX显卡加速AI推理任务,提升智能监控系统的实时响应能力?
  • 【百考通AI论文降重服务】双效净化学术文本,护航您的每一篇论文
  • 百考通AI论文AIGC检测服务:精准识别AI生成痕迹,筑牢学术原创防线
  • 高原无人机测试:稀薄空气下的飞行控制算法
  • AI遗传算法进化:自迭代系统的测试方法论
  • 硅谷秘闻:某大厂AI测试工具凌晨“造反”事件——一名测试工程师的深度复盘与行业警示
  • 计算机毕设java疫情防控物资管理平台 基于Java的疫情防控物资智能管理系统设计与实现 Java技术驱动的疫情防控物资信息化管理平台构建
  • ‌用AI测试约会软件:算法推荐的100次翻车现场‌
  • 测试AI诗人:代码生成的情诗竟获文学奖?‌
  • 计算机毕设java虚拟股票交易系统 基于Java的虚拟股票交易平台设计与实现 Java技术驱动的虚拟股票交易管理系统开发
  • 英文最强的ai 模型
  • LangChain开发环境准备-AI大模型私有部署的技术指南(附教程)
  • 2026熬夜实测:从85%降到5%!全网最硬核的论文降aigc免费实操教程(附降AI工具合集)