程序员大神教你学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 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

Python3 与 C# 扩展之~模块专栏

代码裤子:https://github.com/lotapp/BaseCode/tree/maste

1625
来自专栏Nian糕的私人厨房

Canvas 让你的屏幕下一场 Hacker 流星雨吧

今天来分享一个很狂拽酷炫吊炸天的特效,其装逼效果不亚于上面那张入侵五角大楼导弹制导系统的概念图(手动滑稽),实现起来很简单,跟着动手一起来吧

642
来自专栏琯琯博客

Yii2 学习笔记之助手类

2657
来自专栏JadePeng的技术博客

Latex 公式在线可视化编辑器

寻觅 最近的一个demo需要用到Latex公式在线编辑器,从搜索引擎一般会得到类似http://latex.codecogs.com/eqneditor/edi...

3886
来自专栏塔奇克马敲代码

Windows平台下源码分析工具

1283
来自专栏塔奇克马敲代码

Windows平台下源码分析工具

2083
来自专栏iOSDevLog

Unity 3D 开发《王者荣耀》:英雄移动地图英雄

1703
来自专栏挖坑填坑

Angular练习之animations动画二

引入动画模块>创建动画对象>在动画载体上使用。我觉得其核心的内容在创建动画对象上,今天我们就来练习创建不同的动画对象trigger

672
来自专栏代码GG之家

google 分屏 popup无法显示故障分析

问题描述 [Message][Input method]Display is wrong when message at split mode. 分屏模式下短信...

1899
来自专栏IMWeb前端团队

一年前的焦点bug终于找到原因了, 图标文本对齐完美了~

? 正常来说点击可编辑框末尾空白,光标默认会闪烁在末尾 , 但是闪到了倒数第二个了....当时一直以为js有问题...压根没想到是一个top属性.... 虽然...

1969

扫码关注云+社区