目录
1.1 C督学营开营
1 老师介绍
2 学习常见问题
3 如何学习课程
1.2 程序员职业发展方向
1 前端
2 后端
3 网络安全
1.3 Windows 的 CLion 开发环境安装
1 C 语言的由来
2 安装 MinGW 编译器
3 安装 CLion 开发环境
4 运行&试用 CLion
5 新建项目
6 激活
7 汉化
1.4 Mac 电脑 Clion 安装教程
1 安装
2 激活
3 汉化
1.5 向日葵的安装
1 下载向日葵
2 安装向日葵
3 安装后如何启动与使用
1.6 什么是程序-编译与调试
1 程序的作用
2 新建 HelloWorld
3 printf 打印输出
4 单行与多行注释
5 程序的编译过程
6 项目在磁盘上的位置
7 断点及调试窗口设置
8 学习C语言后的境界
练习题
1.1 C督学营开营
1 老师介绍
1、08 年毕业于中南大学,华为欧拉部 4 年操作系统开发经验(鸿蒙系统即该部门出品),华为手机内核,全球数百万基站、路由器操作系统使用该部门系统,OPPO 高级开发工程师,7 年大厂开发经验!
2、王道训练营 7 年多线下授课经验,带 20 多期学员,深受广大学员好评,学员无论读研,还是社招,在各大互联网公司(腾讯、阿里、美团)均有,大家知道的知名企业全都有!
3、《跟龙哥学 C 语言编程》作者,报名王道的清华、北大等同学都对本书给予了案例丰富、容易理解、贴合实战的好评!有些学生是王道训练营培训后,二战考研上岸,因为学了编程普遍反馈 408 简单了!
2 学习常见问题
1、不会安装环境 —— 放弃
2、不会新建项目 —— 不管了
3、程序编译不通
a:没写 main,或者写了多个 main
b:没加分号
……
编译错误不去看 或 看不懂,结果就只看答案不写程序了。
4、分不清编译错误和执行错误
编译错误发生在程序被编译成可执行文件的过程中。编译器检查代码以确认其语法正确,并尝试将代码转换为机器语言。如果编译器发现代码中存在任何语法错误、类型不匹配、缺少库引用、未定义的标识符等问题,它将停止编译过程并报告错误。
特点:
- 编译错误阻止程序生成可执行文件。
- 错误通常与代码的结构或语法有关。
- 错误信息由编译器提供,并指向代码中出错的具体位置。
执行错误发生在程序运行期间。这些错误通常是由于程序逻辑错误、内存访问违规(如解引用空指针)、数组越界、除数为零等引起的。这些错误在编译时可能无法被检测到,因为编译器只能检查代码的语法和结构,而不能预测所有可能的运行时情况。
特点:
- 程序可以编译成功并生成可执行文件,但在运行时出现错误。
- 错误可能导致程序崩溃、产生异常输出或行为异常。
- 错误通常更难调试,因为它们可能与程序的逻辑或外部条件有关。
5、不会调试
6、不理解某个原理,直接用到代码中,结果不对
7、最终走向放弃……
3 如何学习课程
1、每周按进度,看视频(非常重要),学习课程,写作业,展示视频学习方法。
2、有问题及时提问,提问时一定要同时艾特助教老师。答疑时间周一到周六早上 9 点到晚上 10 点,答疑时间段内禁止群内闲聊。
3、注意查看常见问题总结(常见问题总结腾讯文档链接在微信群公告)
4、目前大三的同学蓝桥杯之类的竞赛建议不参加(大一大二的同学可以)
5、本课程前三节可以免费试听,可以通过试听来判断本课程是否适合自己,课程质量问题可以反馈给班主任,另外可以通过定期的调查问卷反馈,或者扫描每小节课件后的二维码进行反馈,确定存在问题的小节会第一时间进行视频更新!
1.2 程序员职业发展方向
1 前端
研究生选择前端岗位的人数较少。
2 后端
研究生选择后端岗位的人数较多,目前【算法类】较为火爆,如AI人工智能、深度学习等。
3 网络安全
1.3 Windows 的 CLion 开发环境安装
其他开发环境说明:
- 如果熟练Visual Studio(不是VScode),可以直接使用。
- 不要使用dev C++, codeblosks等开发工具,调试不方便。
1 C 语言的由来
在搭建开发环境之前,这里先讲一个故事。C 语言为什么叫 C 语言呢?其实是因为先有高级语言 ALGOL 60(简称 A 语言),后来它经过简化变为 BCPL 语言(改进后称为 B 语言),而 C 语言是在 B 语言的基础之上发展而来的,所以就称为 C 语言。因此,世界上的第一个 C 语言编译器是用 B 语言编写的。目前,主流的编译器是 GCC 编译器(Mac 计算机也使用这个编译器), 我们使用的也是 GCC 编译器。
学习一堆关于 C 的版本及标准意义不大,关键是要掌握编译器支持的语言特性(同时我们学习的语法初试,机试使用均没问题)。
1972 年,Dennis M. Ritchie 在 B 语言的基础上最终设计出了一种新的语言,他以 BCPL 的第二个字母作为这种语言的名字,这就是 C 语言。
KenThompson(左)和DennisM.Ritchie(右)
2 安装 MinGW 编译器
MinGW提供了一套工具链,包括C、C++、Objective-C等编程语言的编译器、链接器和其他相关工具,允许在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。
到链接:https://pan.baidu.com/share/init?surl=sK_AZiysbNsuRHX8zM3xkQ
提取码:xq6v
下载 mingw.zip 压缩包,放到 C 盘根目录下,直接解压即可,如下图所示:
3 安装 CLion 开发环境
去 https://www.jetbrains.com/clion/download/other.html 下载CLion,注意要下载 2021.1.3 这个版
本,与老师保持一致,如下图所示:
双击exe后得到下图,然后依次下一步(next)安装即可:
最好不改变安装路径,如果改变了,安装路径中不可带有中文,切记!!!
下图中的选项全部勾选:
安装需要一点时间,安装完毕后,提示重启,重启即可:
4 运行&试用 CLion
双击桌面的CLion图标启动,或者在开始菜单中搜索Clion然后打开:
第一次安装会有下图提示,打钩,然后点击Continue:
如果不是第一次安装CLion,会出现下面这个界面,直接点击OK:
先试用30天:
5 新建项目
点击NewProject后,弹出下面窗口,图中的项目存储路径与项目名必须是英文的,不可含有中文,如果自己的用户名是中文的,可以在D盘新建一个文件夹,放项目!
如果需要更改项目存放路径:
点击create后会得到如下图所示效果,第一次使用CLion需要配置MinGW(99.9%都可以直接自动侦测成功):
如果第一次新建项目后,没有弹出上面让选择编译器的界面,而是弹出其他窗口界面,直接关闭对应窗口,手动进行MinGW的配置:
6 激活
将激活文件直接拖拽进CLION窗口:
查看激活状态:
以上激活手法来源于互联网,讲解目的是为了方便教学,商业使用请购买正版!
如果是在校学生,可以通过链接 免费教育许可证 - 社区支持 (jetbrains.com.cn) 申请。
7 汉化
如下图所示,点击File中的Settings:
然后选择Plugins:
如果报下面错误,说明连不上服务器:
那我们使用离线安装方式:
本地下载好版本对应的汉化包:
导入后,点击Restart IDE:
重启后,界面就会是中文:
1.4 Mac 电脑 Clion 安装教程
1 安装
去 Other Versions - CLion 下载Clion:
也可以直接到链接进行下载:百度网盘 请输入提取码
提取码:xq6v
下载效果如下图,直接双击安装:
按图中提示进行拖拽即可完成安装:
安装后在程序中会看到如下图标,双击打开即可:
如果有如下提示,选择打开:
如果有下面提示,选择Donotimportsettings,点击OK:
到下图这一步时,选择Evaluateforfree,按图中所示点击Evaluate
这一步按图所示,点击Continue:
按图中所示点击NewProject新建项目:
根据图中所示,如果是新建C++项目,就选C++,如果新建C项目,就选C:
在编译器这一步,直接不用选,如图中所示点击Next即可。
(如果点击不了next,说明没有C语言编译器,这个概率极低,没有gcc,按照下面连接安装Mac 上安装 GCC_mac 单独安装gcc-CSDN博客)
如下图所示,点击绿色三角按钮即可运行自己编写的代码(代码编写在main.c中进行):
2 激活
激活方法就是把 ide-eval-resetter-2.1.13.zip 直接拖入窗体内即可激活:
拖入窗体后会有下面的提示,按箭头点击:
弹出的网页不管,如下图所示点击即可完成激活:
如果哪天打开软件快到期,根据下图,点击help中的evalreset即可:
3 汉化
选择perferences后,在plugins中输入chinese。
后续步骤同Windows一样,不在叙述。
1.5 向日葵的安装
1 下载向日葵
可以通过官网地址 https://sunlogin.oray.com/download?categ=personal 进行下载。
也可以通过百度网盘下载:
链接:https://pan.baidu.com/share/init?surl=78O4bniEZHbX4a6cgBCc6w
提取码:vsr3
2 安装向日葵
傻瓜式安装,依次点击下一步即可,由于占有空间不大,直接安装在默认路径即可(windows和 Mac 一致)
3 安装后如何启动与使用
桌面有向日葵图标(Mac 电脑在应用程序中)
双击图标启动,启动后如下图所示,可以不用注册,需要远程协助时,将下图中的本机识别码发给老师或他人即可,老师或他人远程操作时,自己可以看到老师的每一个键盘或者鼠标操作(就是自己的屏幕变化自己可以看到),而且自己移动鼠标就可以终止老师的操作,因为无需担心个人隐私泄露问题。
1.6 什么是程序-编译与调试
1 程序的作用
如下图所示,我们编写了一个可以做加法的程序,我们给程序输入 1 和 2,那么程序输出结果 3,因此这个程序的作用是完成某种计算。
程序在现代社会中扮演着多种多样的角色,其作用远超过简单的计算任务。它们能够自动化重复性任务,处理和分析数据,管理信息,提供用户交互界面,辅助决策,提供娱乐和媒体体验,支持教育和培训,实现网络通信,保护安全,以及进行智能控制等。
2 新建 HelloWorld
新建项目后默认会有一个main.c代码,如下图所示:
#include <stdio.h> // 引入标准输入输出头文件,以便使用printf函数
int main() { // 主函数,程序的入口点
// 调用printf函数,在屏幕上打印出"Hello, World!\n"
// \n 是一个转义字符,表示新的一行
printf("Hello, World!\n");
// main函数返回0,表示程序正常结束
return 0;
}
程序说明:
- main是主函数名,int是函数返回值类型。
- 每个C程序有且只能有一个主函数main,程序从main函数开始执行。
- 花括号{}是函数开始和结束的标志,不可省略。
- 每个C语句均以半角分号结束。
3 printf 打印输出
使用标准库函数时应在程序开头一行书写如下内容:
#include <stdio.h> //printf函数需要使用该头文件
printf函数起打印输出的作用,它将双引号中的字符串 Hello, World! 打印到屏幕上。
4 单行与多行注释
单行注释
单行注释以双斜杠(//
)开始,直到该行的末尾。这种注释方式只能用于注释掉从//
开始到行尾的部分代码。这种注释方式不能跨越多行,并且也不能嵌套。例如:
// 这是一个单行注释
int a = 5; // 这部分也是注释
多行注释(也称为块注释)
多行注释以/*开始,以*/结束。这种注释方式可以跨越多行,用于注释掉一段代码块。这种注释方式可以跨越多行,但同样不支持嵌套。例如:
/* 这是一个多行注释
它可以跨越多行
*/
int b = 10;
/*
下面的代码块被注释掉了,
因此不会被编译器执行。
int c = a + b;
*/
需要注意的是,尽管多行注释可以跨越多行,但它们不能嵌套使用。也就是说,你不能在一个多行注释内部再开始一个新的多行注释,直到外部的多行注释结束。如果尝试这样做,编译器可能会因为找不到结束标记*/
而报错。
/* 这是一个多行注释
/* 尝试嵌套注释 */
但这里并不是注释的结束
*/
5 程序的编译过程
程序的编译过程确实是一个从人类可读的源代码转换为计算机可直接执行的机器代码的过程。这个过程大致可以分为以下几个步骤,以C语言程序(如main.c
)为例来说明:
-
编写源代码:
程序员使用文本编辑器(如Notepad++, Visual Studio Code, Sublime Text, 或专门的IDE如CLion,Visual Studio, Xcode, Eclipse等)编写源代码,这些源代码文件通常具有特定的扩展名,如.c
对于C语言。 -
预处理(Preprocessing):
编译器在编译之前,首先会进行预处理。这一步会处理源代码中的预处理指令,如包含头文件(#include
)、宏定义(#define
)、条件编译(#ifdef
,#ifndef
,#endif
)等。预处理后,生成一个包含了所有必要信息的新文件,但通常这个步骤的输出文件对程序员不可见。 -
编译(Compilation):
经过预处理后的代码会被编译器进一步处理,即编译过程。编译器将源代码转换成汇编语言代码(Assembler code),这一步是源代码到机器码的中间步骤。汇编语言是一种低级语言,比机器码稍高级,但仍然是针对特定CPU架构的。 -
汇编(Assembly):
汇编器将汇编语言代码转换成机器码(Machine Code),即0和1的序列,这是CPU能直接执行的指令集。这一步生成的机器码是特定于目标平台(如x86, ARM等)的。 -
链接(Linking):
如果程序中使用了外部库或定义了多个源文件(.c
文件),则需要进行链接。链接器将多个目标文件(Object Files,即.o
或.obj
文件,它们是编译和汇编过程的结果)以及所需的库合并成一个可执行文件(在Windows下通常是.exe
,在Unix/Linux/Mac下通常是没有扩展名的)。链接过程中还会解决程序中的函数调用、变量引用等依赖关系。 -
执行:
生成的可执行文件可以被加载到内存中,由CPU执行。在操作系统中,这通常通过双击文件图标、在命令行中输入文件名并回车或使用操作系统的其他机制来完成。
每一步的输入输出文件:
- 预处理:源代码文件(
.c
) -> 预处理后的源代码(逻辑上,不生成物理文件) - 编译:预处理后的源代码 -> 汇编文件(
.s
或逻辑上相似) - 汇编:汇编文件(
.s
或.asm
) -> 目标文件(.o
或.obj
) - 链接:目标文件(
.o
或.obj
)及库文件 -> 可执行文件(.exe
或无扩展名)
需要注意的是,并不是所有的编译过程都严格遵循上述的四个独立步骤(预处理、编译、汇编、链接)。在某些情况下,这些步骤可能被合并或优化。例如,现代编译器可能会将编译和汇编步骤合并为一个步骤,以减少编译时间和提高效率。此外,一些集成开发环境(IDE)可能会自动执行编译和链接过程,并在后台隐藏这些复杂的步骤。
6 项目在磁盘上的位置
如下图所示,右键单击“项目名”,选择打开,选择Explorer:
就可以看到如下界面,就是我们的项目文件夹:
7 断点及调试窗口设置
程序在我们点击绿色三角形按钮时,一下子就运行到最后一步了,速度非常快,如果最终输出的结果和我们预期的不一样,我们如何查找代码的哪一步出了问题呢?秘诀就是让它运行慢下来(类似于魔术慢放),一次只让程序运行一步,如何让程序运行慢下来,那就是断点调试!如下图所示,在位置1处添加断点(断点位置代表从哪一步我们开始慢下来),点击位置2启动调试。
当点击虫子按钮后,调试就启动了,出现蓝色长条代表调试启动,如下图所示:
注意:蓝条所在行,表示此语句还未得到执行。
点击了上图的单步运行按钮(上图2指向的折弯箭头),得到如下图:
什么是调试?
调试(Debugging)是软件开发过程中一个至关重要的环节,它涉及到查找、识别并修正程序中的错误(或称为“bug”)。这些错误可能导致程序无法正确执行其预期的功能,或者产生非预期的结果。
在调试过程中,程序员会仔细分析程序的运行过程,特别是那些可能导致问题的部分。由于程序在执行时会进行各种计算,这些计算会改变程序中变量的值,因此,监视这些变量的变化是调试过程中的一个重要手段。
变量监视窗口(或称为“调试窗口”、“观察窗口”等)是许多集成开发环境(IDE)和调试工具提供的一个功能,它允许程序员在程序运行时实时查看变量的值。当程序执行到某个特定点时,程序员可以暂停程序的执行(这通常通过设置断点来实现),然后查看此时程序中各个变量的值。如果发现某个变量的值不符合预期,那么很可能就是这里出了问题,也就是找到了一个bug。
8 学习C语言后的境界
掌握的能力是程序的调试能力,要灵活掌握单步调试手段,要能在清晰理解程序执行过程的基础上准确分析数据(变量)的变化过程,定位程序的问题点,进而解决问题。学好了C语言,才能去练习中级阶段的数据结构算法实战,而且以后在学习其他任何语言并调试程序的问题时都会事半功倍!
练习题
1、程序的作用是完成某种计算?
A.正确 B.错误
答案:A
2、一个项目可以有2个main函数?
A.正确 B.错误
答案:B
解释:一个项目只能有一个main函数,因为main 函数是入口函数,程序从这里开始运行。
3、源代码文件main.c需要编译为最终的可执行文件,CPU才能执行,CPU不能够直接去运行main.c?
A.正确 B.错误
答案:A
解释:因为编译好的可执行文件内的指令是才能够被CPU的译码器解析。
4、CLion是点击绿色三角形开启调试?
A.正确 B.错误
答案:B
解释:绿色三角形按钮是运行按钮,绿色小虫子按钮才是调试按钮。
5、CLion 调试时蓝色长条线所在行代码已经得到执行?
A.正确 B.错误
答案:B
解释:蓝色长条线所在行代码并未得到执行,是其将要被执行。