1. C语言的第一个程序

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

a0c524b33cbe340079284fa307ab0abea5af2bab

除了编译型语言,还有解释型语言,如 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”框勾选上,如下图所示

0238c2ca36fe63fb05b60c191a11774ae8e529d9

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

4

执行第一个C语言程序

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

#include
<stdio.h>
int
 main
()
{
    printf
(
"Hello World!\n"
);
return
0
;
}

其中的 #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

好了,今日份的内容大概就到这里了,感谢大家对我的信任


原文发布时间为:2018-10-01

本文作者: 独孤呆博

本文来自云栖社区合作伙伴“轮子工厂”,了解相关信息可以关注“轮子工厂"


相关文章
|
3月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
5月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
122 1
|
5月前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
160 1
|
5月前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
240 0
|
2月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
80 5
|
2月前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
80 4
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
76 1
|
2月前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
61 2
|
2月前
|
程序员 C语言
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门。本文深入探讨了指针的基本概念、声明方式、动态内存分配、函数参数传递、指针运算及与数组和函数的关系,强调了正确使用指针的重要性,并鼓励读者通过实践掌握这一关键技能。
51 1
|
3月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序