程序员大神教你学C语言/C加加编程零基础新手入门

第一章:编译器和程序

很多小伙伴都老是会碰到疑问,其实还是基础没打扎实,这些题如果你不看答案你能知道多少呢?如果还有很多不知道就证明基础没打扎实,如果你还在入门纠结,如果你还在苦恼怎么入门!,最下面+新手入门资料,可以说从零到项目实战,都是可以免费获取的,还有程序员大牛为各位免费解答问题,热心肠的小伙伴也是蛮多的。不失为是一个交流的的好地方,小编在这里邀请大家加入我的大家庭。欢迎你的到来。一起交流学习!共同进步!小编等你!

在学编程之前,我要提到两个问题,我们都说计算机很强大,它究竟强大到什么地步了,比如说飞天遁地它会吗?你见过遥控飞机吗,有人说那是小玩意,那无人驾驶飞机呢?再比如说它能造原子弹吗?仿真实验室知道不,1996年9月10日的联合国大会,以158票赞成、3票反对通过了《全面禁止核试验条约》,该条约的通过只能说明核竞赛在实爆方面的结束,计算机模拟仿真却是一种有效的核试验方式。第一个我要问大家的问题是,计算机不能做什么?这个问题需要大家以后去发现;第二个问题是为什么学计算机要学编程?首先问问自己为什么要学计算机,想开发软件,想当黑客,或做一个游戏,或做一个网站,哪样是不需要编程的,这是永远都不能回避的一个问题,编程才是计算机的精髓。

我们说语言是表达自己思想的工具,但是语言又分好多种,有汉语、英语、西班牙语、缅甸语...如果一个只懂英语和只懂缅甸语的两个人碰头了,那他们改怎么交流呢,这时候就需要翻译了,计算机底层只能识别0和1组成的代码,对于计算机来讲它的语言就是0、1代码(又叫机器语言),假设我们学的是C语言,那要想让我们的C语言能够让计算机理解,这时候我们也需要一个翻译,这个翻译就是C编译器,当然还有其他很多语言的编译器(比如C++编译器、Delphi编译器),这里涉及到3个问题我要讲清楚,

1是我们能够把计算机识别的0、1代码转换成其他语言吗(比如C语言)?可以,但是这个难度比较大,需要通过大量的学习,不适合初学者学习,通常我们把这个过程叫做逆向。

2是我们的编译器都是把计算机语言翻译成机器语言吗?不是,有些会翻译成一些中间语言,比如java的编译器会把java代码翻译成Java虚拟机能够识别的代码,然后由Java虚拟机去把这个代码转换成机器语言来执行,所以如果不管中间过程,最终所有的代码都会被翻译成计算机能够识别的机器语言。

3是我们为什么不使用能够把我们的汉语转换成机器语言的编译器?因为汉语和其他我们人类使用的语言一样,它们是有歧义的,同样的一句话可能有两种或多种意思,计算机不能识别歧义,所以必须约定一套计算机能够完全识别的语言,所以就算计算机是美国人发明的,它们也并没有发明出能够直接使用英语来编写程序的编译器(需要说明的是易语言这样的并不属于真正的汉语编程语言)。

所以从开始学习C语言时,我们需要的仅仅是一个翻译,我在下面会给出三个编译器链接:

C-Free、Dev-C++、VC6.0,当然我电脑上还有VS2013和VS2015和VS2017。

尽管很不情愿,但为了防止部分同学不会安装软件,我还是演示下怎么安装编译器(以C-Free为例),我是在虚拟机里面演示的,虽然是虚拟机,但其实是在自己电脑上虚拟出来的一台电脑,和真机没有任何区别。下载编译器完成后,右键此文件,选择解压到CFree5pro文件夹

打开CFree5pro文件夹会发现这样两个文件,c-free5_0_pro这个是安装程序,注册码是待会注册要用的

点击c-free5_0_pro出现安装界面后,直接点下一步

选择“我同意此协议”,继续点下一步

接下来出现程序安装目录,这个我一般是选择D:Program Files,但是这里为了方便就不更改了,继续点下一步

然后再点击几次下一步,来到安装的最后界面,这里点安装就开始安装编译器了。

等安装的绿条走完后,来到了是否运行C-Free编译器,直接点完成编译器就跑起来了。

先把这个新建工程的对话框点关闭了,因为C-Free不是免费软件,所以这时候我们用的还只是试用版的,这时候我们选择编译器上面一排的“帮助”,在弹出的下拉列表中选择“注册”。

把我们之前的那个注册码文件打开,把这里面的三项用户名、邮箱和注册码分别拷贝到C-Free的三个输入框里面去,点击确定就可以了,这时候它会要求你重启编译器,点击之后再重新点击桌面的C-free编译器就ok了。

然后接下来开始我们的第一个程序,选择C-Free上面的工程->新建,windows下的编译器都差不多,反正一般都是在文件或者工程里面选择新建一个工程

在弹出框中要说明三项,一个是要新建的工程类型,我们这里选择“控制台程序”就好(这种程序就是黑框框界面的那种,后面还有窗口程序、链接库,我发现C-Free后面的GUI toolkits里面还有QT项目)。工程名称是你的程序的名称,我这里写的是HelloWorld1,第三项就是保持位置,我这里是默认保存在桌面,我就不管了,这三项弄好后就直接点确定了

然后接下来会选择控制台程序的类型,我们选第三个“Hello,World程序”(因为这样编译器会自动帮我们生成HelloWorld的代码,因为我们还没有讲语法,就先让编译器自己帮我们生成一个好了),点下一步

然后会弹出语言选择,我们是默认的C语言就行了,点下一步

然后会弹出一个构建配置,这个意思就是C-Free默认内嵌的编译器(MinGW),所以不要认为写出C-Free这样的编译器就一定有多厉害了,其实只是内嵌了一个MinGW编译器啦,以后如果大家想学的话,我会教大家怎么从零开始写编译器,不需要依靠别人内嵌编译器。这里直接点完成就行了。

接下来请看编译器的右边会出现一个文件列表,这里面有三个文件夹Source Files、Header Files、Other Files以及一个main.c文件,这就是编译器自动为我们生成的文件,如果我们之前在48那个图里面选择空的程序就不会有一个文件了。点击main.c文件打开看看

我们在这里就可以看到main.c里面写的C源代码了。

接下来点击构建->运行,这里直接点运行其实编译器是执行了三步操作,第一步是编译,就是把main.c这个文件转换成main.o文件,第二步是链接,C-Free编译器这里叫构建,就是把main.o文件可一些库文件链接成HelloWorld1.exe文件,第三步才是运行,效果就相当于我们点击了HelloWorld1.exe这个文件一样,我们有时候可能并不需要直接点构建->运行把这三步全做完了,比如我们写一个病毒的时候,我们只需要执行到第二步就可以了,因为第三步再执行的话我们自己的电脑就要中招了。这里直接点运行就是为了方便啦

点击运行之后就是我们程序运行的结果了

我们可以进入我们在47楼填写的保持位置,我填的是桌面,我在桌面就能找到文件名为HelloWorld1的文件夹,mingW5文件夹里面有两个文件main.o和HelloWorld1.exe,这两个文件就是编译器编译文件的第一步和第二步分别生成的文件,点击这里的HelloWorld1.exe也会出来同样的效果

Dev-C++版本:

其实它们新建项目都是类似的过程,具体步骤我就不写了,我就贴几张图出来了

这里需要新建一个文件夹,不如C-Free那么方便,我新建的文件夹就叫HelloWorld2了

然后点进去HelloWorld2再点保存,dev-C++就会把HelloWorld2.dev这个文件放到HelloWorld2文件夹里面去

这里同样可以看到main.c源代码和左边的文件列表(c-free是在右边),不过我们点击运行->运行后出来的黑框里面并没有"Hello"相关的信息,因为编译器并没有帮我们生成。

这里我们就需要在main.c文件里添加printf("hello,world!");这一行,它的意思就是打印出hello,world!

添加这行代码后再点击运行->编译运行就能出来结果了。

VC6.0的我就先不讲了,其他都差不多,我的建议是如果你电脑上能装VC6.0的话就尽量装它,毕竟它是有工业强度的编译器,而且网上许多源码都是在VC编译器的平台上开发的(当然如果你能安装更高版本的VC编译器当然更高,我电脑上就有vs2013和vs2015和vs2017),如果你VC6.0装不上那就装c-free吧,也比较方便,dev-C++不算很方便。

今天就讲到这里,欲知后事如何且听下回分解(手动滑稽)~

本文来自企鹅号 - 小辰带你看世界媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码神联盟

碎片化 | 第四阶段-47-值栈细节问题-视频

本套视频从Java基础到架构模式以及AI算法,整体视频以“碎片化”学习的模式,提供给大家 ,并配备实际项目为案例,让大家在坐车、吃饭、午休、蹲坑的时候,都可以学...

3155
来自专栏申龙斌的程序人生

零基础学编程029:程序员作图不用笔

现在写专业文章离不开图,有些图非常复杂但非常有规律,用PowerPoint或Visio画都很吃力,这时候会编程就轻松多了,比如下面这张状态转换图: ? 再比如...

2725
来自专栏我有一个梦想

3D游戏开发之在UE4中创建非玩家角色(NPC)

接着上节我们继续学习,现在我们来创建一些NPC(non-playable characters,非玩家角色)。在这个游戏中,当我们靠近NPC时,它们会做出相应的...

2478
来自专栏施炯的IoT开发专栏

《101 Windows Phone 7 Apps》读书笔记-Trombone

课程内容 Ø Sound Manipulation Ø Sound Looping Ø SoundEffectInstance     相对于前一章的C...

1777
来自专栏SpringSpace.cn

RHEL 4.7 (64bit) 环境安装 GCC 4.6 测试记录 (更新至gcc-4.6.1)

Red Hat Enterprise Linux AS release 4 (Nahant Update 7)

1062
来自专栏面朝大海春暖花开

前端小零碎

当进行事件绑定的时候可以直接obj.onclick=function(){}进行操作。当是进行for循环进行事件绑定就会出现问题,只会监听到最后数组最后的数据。

782
来自专栏FreeBuf

Ngrok和树莓派绕过企业防火墙并访问内网主机实验

绝大多数安全研究人员所面临的一个常见问题,就是如何在目标网络部署了严格的企业级防火墙或路由器时,如何访问目标企业网络内的办公计算机或者本地设备。在很多情况下,我...

2674
来自专栏WeaponZhi

使用Python快速获取公众号文章定制电子书(二)

接上篇文章使用Python快速获取公众号文章定制电子书(一)。我们现在已经成功的将公众号历史消息的前十条文章给爬取了出来,使用 content_url 这个关键...

813
来自专栏宋凯伦的技术小栈

JSON中不能加注释

  今天犯了一个白痴级的错误,那就是向JSON数据文件中,很多行后面添加注释(Comment,//)。   导致Node.js程序不能读取JSON文件,Serv...

2227
来自专栏机器学习算法与Python学习

为什么越来越多的人学习Python

Python, 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python...

2955

扫码关注云+社区