(。・∀・)ノ゙嗨!大家好,我是呆博~很开心可以在这里给大家分享我的 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

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

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

参考

[1]  “小甲鱼” 视频课程《带你学C带你飞》【第一季】P2

往期精彩回顾

精彩预告|终于有人陪你一起学C语言了!

欢迎大家关注我的知乎号(左侧)和经常投稿的微信公众号(右侧)

也欢迎大家点击最下方的阅读原文,关注我的CSDN博客

1. C语言的第一个程序相关推荐

  1. 学习C语言的第一个程序

    代码: #include <stdio.h> //写代码 //1.写出主函数(main函数) //100-500代码 //如何执行呢? - C语言从主函数得第一行开始执行的 //所以C语言 ...

  2. go语言实现第一个程序-hello,world!

    0.前言 工作中一直使用c++编写高并发服务器程序,但c++编写高并非服务器程序时多线程逻辑,锁机制导致的死锁,内存泄漏,崩溃等问题会耗费大量时间和精力. 听同事说go语言是专门做高并发编程的,不用考 ...

  3. 起航,第一个程序——还是LED灯

    如同学基本语言一样,helloworld是很多语言的第一个程序.在嵌入式开发中,点亮LED灯也是各种架构和开发板的第一个程序,其中很多东西是和单片机例如stm32是类似的,只是,现在我们没有了库函数, ...

  4. 市场上主流计算机语言的第一个程序

    芥末在学校里学习的是C.C#.Java-甚至是现在在学习的Python,不论是哪种语言,第一个程序的输出永远都是"Hello World",王小波也是一个程序员,他在追李银河的时候 ...

  5. c语言第一课程序代码怎么打,【北北的小程序】北のC语言第一课:helloworld

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 诶多!helloworld神马的,是我们要编写的第一个程序哟! 话说第一课为什么不讲一些C语言的发展,优势什么的呢?因为LZ是java党!对C语言本身不是 ...

  6. go语言第一个程序-hello world

    文章目录 go语言第一个程序 go语言第一个程序 继上一篇博文完成Ubuntu的go语言环境配置后. 此篇博文,仅记录第一个go语言程序的创建及运行. 首先,找到一个文件夹,用来作为存放文件的地方. ...

  7. c语言的一段程序,C语言第一个程序(入门)

    1.文件类型(基本) c语言源文件  为.c 文件扩展名,例如 main.c    编译后将得到 a.out 文件   运行会得到 我们程序执行的结果 2.hello world (第一个程序) #i ...

  8. C语言第一个程序——一个简单的Hello world!程序

    对于初学者来说,第一个程序一般都是hello world,而且是照着书上一点一点敲的.所以,在初学者眼中,敲出来的第一个程序代码不过是一堆看不懂的英语.而事实上,C语言作为一门语言,是有语法的.所以这 ...

  9. 【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 10 日,在 120 年前的今天,瑞典国王和挪威诺贝尔基金会首次颁发了诺贝尔奖.根据诺贝尔 ...

  10. 第一章 c语言概述程序逻辑,第一章 程序逻辑与C语言概述

    1.第一章 程序逻辑与C语言概述,1.1 C语言概述1.2 程序和程序逻辑,第一章 程序逻辑与C语言概述,1.1 C语言概述,[学习目标]了解C语言工作机制掌握C语言程序的的基本构成了解C语言程序的编 ...

最新文章

  1. php模板技术smarty,PHP模板技术Smarty
  2. Java数据类型转换(自动转换和强制转换)
  3. 基于syslog+logstash+elasticSearch+redis日志分析系统实现
  4. 计算机硬件软件维护报告,计算机软硬件及络维护技能实习报告.doc
  5. centos配置ftp
  6. qt添加菜单纯代码_Qt Creator 插件开发(3):添加菜单项
  7. 一个类中有一个参数,需要在另一个类中用到
  8. 30hibernate_fetch_1_select
  9. python对list处理
  10. iOS xcode4 编译环境
  11. 通信接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB
  12. Android对话框的使用
  13. dex转java工具_安卓dex反编译工具(dex-translator)
  14. excel 某个单元格不是等于空值,Excel返回第一个与所有非空单元格及统计数量,把空单元格替换为0...
  15. ES6 isFinite()
  16. 液晶显示器汉字字模存储及显示
  17. 前端开发基础——网络相关(TCP、UDP、HTTP等)
  18. 网上有一款测试人血压的软件,中国和加拿大合作新研究开发出一款可通过自拍测量血压的软件...
  19. AD10 如何在规则中设置过孔铺铜直连方式
  20. LibreOJ #6177. 「美团 CodeM 初赛 Round B」送外卖2【状压DP】

热门文章

  1. 天嵌通途B210和USRP B210性能对比实验
  2. Paper intensive reading (六):Altered Interactions between the GM and Colonic Mucosa Precede Polyposis
  3. 完美国际服务器维护中,《完美国际2》3月31日全服更新维护公告
  4. Centos系统如何开启关闭防火墙
  5. bugku-逆向-5、Timer
  6. SQL Server 2008 远程过程调用失败的问题解决方法
  7. echarts使用rich设置显示数据label颜色
  8. 一个农村小伙的淘宝创业故事
  9. 347. Top K Frequent Elements
  10. 网络语言2019流行语C位解,最新骂人网络语言 2019网络骂人流行语大全