专栏首页轮子工厂1. C语言的第一个程序

1. C语言的第一个程序

(。・∀・)ノ゙嗨!大家好,我是呆博~很开心可以在这里给大家分享我的 C 语言学习笔记~

虽然维护我的个人博客已经有一年多的时间了,但是这么认真的连载文章还是头一回,而且也是第一次使用微信来排版,多少有点紧张。如果有什么纰漏,无论是排版内容,还是知识点的错误,大家直接指出来就好~

言归正传,那就开始今天的学习之旅吧!今天的文章将会概括的介绍下 C 语言,包括 C 语言的优点,如何搭建 C 语言的学习环境等,一起来吧!(づ ̄3 ̄)づ╭❤~

1

C 语言简介

C 语言属于第三代编程语言,也就是我们所说的高级语言。我们常见的 C++、C#、JAVA、Delphi、Python、Object-C、Swift 这些都属于第三代编程语言。

事实上执行 C 语言所写的程序时,编译器会将你的 C 语言代码编译成汇编语言,再由汇编语言的编译器编译为机器语言,进而让 CPU 理解和执行。通常我们看到的可执行文件事实上就是机器语言的形式。

2

为什么要学习 C 语言?

相信大家在我和厂长的序言中已经看到,C 语言是算法工程师的基础,更是计算机相关行业秋招的基本要求。事实确实是这样,但是什么原因使得 C 语言具有这样的地位呢?主要是以下三点。

1. 效率高

如下图所示,C 语言效率高是针对其他第三代编程语言来讲的,C 语言是编译型语言,源代码最终编译成机器语言,也就是我们所说的可执行文件,这样 CPU 就可以直接执行。

除了编译型语言,还有解释型语言,如 JAVA,Python,Ruby 。如上图所示,解释型语言不直接编译成机器码,而是将源码转换成中间代码,然后发送给解释器,由解释器逐句翻译给 CPU 来执行。这样做的一个好处就是可以实现跨平台的特性,而缺点就是效率相对要低一些,因为每执行一次都要翻译一次。

2. 灵活度高

C 语言不仅提供多种运算符,还可以完成类似于计算机底层操作的位运算;语法简单,约束少;丰富多变的结构和数据类型;还拥有可以直接操作计算机硬件能力。指针可以说是 C 语言的灵魂,C 语言有多灵活和强大,完全取决于你对指针这一知识点的掌握程度。

3. 可移植性高

可移植性高是指源代码在不需要做改动或只需稍加修改,就能够在其他机器上编译后正确运行。C 语言是目前可移植性最强的语言。

3

搭建 C 语言学习环境

在这里只是建议大家使用linux进行日后的编程学习,因为linux下十分很适合工程开发,如果你已经习惯使用 win 下的开发也是可以的。如果相关的学习环境已经搭建完毕或者有自己喜欢的学习环境,可跳过此部分进入第4部分。

考虑到大部分的同学使用 win 系统,所以搭建 C 语言学习环境主要包括安装虚拟机,ubuntu 系统以及 gcc 三个部分。

第一步:安装虚拟机

在这里很友善地推荐大家使用 VMware Workstation 12 Pro,并为大家提供了安装包和正版许可证密钥,VMware Workstation 12 Pro 正版许可证密钥一枚

第二步:虚拟机中安装Ubuntu

首先需要通过 ubuntu 官网下载一个桌面版,然后将它安装到虚拟机中就好了,百度搜索“虚拟机安装ubuntu ”,排序第一个就是一篇很好的教程。但是要注意的是,我们推荐使用 16.04,而那篇教程中是以 14.04 为例,需要注意。

第三步:安装 gcc 编译器

可以通过在终端中执行下面的语句安装gcc

sudo apt-get build-dep gcc

安装完成后可以通过如下方式查看版本

gcc --version

如果在使用上面的命令安装 gcc 的过程中出现了如下的错误

E: You must put some 'source' URIs in your sources.list

往往是由于换源导致的,可以在 Ubuntu 搜索的中找到 ‘Software & Updates’, 然后在 “Ubuntu Software” 菜单中将 “Source code”框勾选上,如下图所示

其中 “Download from” 一项选择刚刚所换的源,点击close 之后会出现询问是否reload的窗口,再点击reload 即可。

4

执行第一个C语言程序

讲了一六十三招,终于到了实践的部分!在学习每一门语言时,所写的第一个程序都是"Hello world!"。我们也不例外,代码如下所示

  1. #include <stdio.h>
  2. int main()
  3. {
  4. printf("Hello World!\n");
  5. return 0;
  6. }

其中的 #include <stdio.h> 表示包含标准输入输出的头文件,这个在编程中几乎是必须要用到的;int main() 表示主函数在结束时会返回一个整型的数值,因为主函数的作用仅仅是打印一个字符串,并没有返回值,所以要在最后 return 0;

在终端中进入上面的 C 文件(比如说文件名为 tmp.c)所在的文件夹,输入如下的语句对我们所编写的程序进行编译

gcc tmp.c -o tmp

上面这句命令的含义是将 tmp.c 预处理、汇编、编译并链接形成可执行文件tmp,其中的 -o 选项用来指定输出文件的文件名。这时如果使用 ls ,会发现在当前文件夹中出现了一个名为 “tmp” 的文件,此时在终端中执行下面该命令便可以得到结果。

./tmp

上面这句命令的含义是执行当前目录下的 tmp 。如果觉得麻烦也可以通过下面的方式直接得到结果

gcc tmp.c && ./a.out

好了,今日份的内容大概就到这里了,感谢大家对我的信任。如果有什么宝贵的

意见记得在下面留言告诉我哦~

本文分享自微信公众号 - 轮子工厂(Programmer-ing),作者:独孤呆博

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • win10/win8换win7教程

    重做系统相信很多小伙伴都get到了这个技能,U启动、大白菜、Ghost安装器…blablabla…一大堆。很多方法都可以帮助你重新换一个系统,但是在预装win8...

    谭庆波
  • 常见的java面试的基础问题(二) | 附赠程序员面试必看的经典图书

    (1)设计模式:解决某类问题行之有效的方法,是一种思想,是规律的总结 (2)用来保证某个类在内存中只有一个对象 (3)保证唯一性的思想及步骤:

    谭庆波
  • 3. C语言 -- 叫你一声你敢答应嘛

    \(@^0^@)/ 嗨!大家好,我是呆博~前两天的文章还满意嘛,如果有不满意的地方尽管提,我一定……嗯……能做到的我一定做。今天准备给大家分享第三篇文章,变量与...

    谭庆波
  • 生物信息学技能面试题(第4题)-多个同样的行列式文件合并起来

    相信用过htseq-count的朋友都知道,它是分开对每个样本计算所有的基因表达量,所以会生成一个个独立的文件,我用perl脚本模仿它的结果如下: $ head...

    生信技能树
  • 【python-leetcode340-滑动窗口法】至多包含 K 个不同字符的最长子串

    比如s="cebea",k=2,那么输出结果就是3,因为此时"ebe"满足条件:至多包含两个不同字符,且子串最长

    绝命生
  • 一款针对红队设计的Payload共享托管服务

    pwndrop是一款支持自主部署的文件托管服务,在pwndrop的帮助下,红队研究人员将能够通过HTTP、HTTPS或WebDAV来发送、上传或共享Payloa...

    FB客服
  • Python 刷题笔记:贪心算法专题三

    今天仍旧是贪心算法的题目,加上之前两篇的四道题,对贪心算法的应用也大致有些印象了,明天换个其它类型题目来继续刷。

    TTTEED
  • “等保”要求趋严,腾讯云安全助力企业快速通过等保

    腾讯云安全
  • Human Interface Guidelines —— 工具栏(Toolbars)

    霖酱
  • Python 计算一年有多少秒

    py3study

扫码关注云+社区

领取腾讯云代金券