C语言是一门介于低级语言(如汇编语言)和高级语言(如Java,Python)之间的一门编程语言,所以它兼有两类语言的一些优点,并且具有自身的一些特点。

    1、c语言的高效性。c语言具有通常是汇编语言才具有的微调试能力,可以根据具体情况微调使得程序更好的使用内存或获得更快的运行速度。

    2、c语言的可移植性。相对于汇编语言、BASIC语言以及FORTRAN语言等,c语言程序能够稍作修改或甚至不做修改就能在不同计算机系统下运行。

    3、强大而灵活。强大而灵活的UNIX系统大部分就是用c语言写的;其他语言(如FORTRAN、Perl、Python、Pascal、LISP、Logo、BASIC)的许多编译器和解释器也是用c语言写的。很多高级语言编译器都会把源程序代码编译为c程序而后才最后生成可执行的机器代码。

    4、面向程序员。c语言是一种面向过程的结构化语言,它的编写非常灵活,也就导致了c程序的编写在不同程序员的操作下就五花八门,它的限制少(如指针运算,虽然这也带来了一些弊端),提供了开发者更多的自由。

  下图显示了编译器在高级语言程序和机器之间扮演的角色:

    

  关于c编程的基本策略:用程序将源代码文件转换为可执行文件。其基本步骤为编译和链接——编译将源代码转换为中间代码,而链接器把中间代码和其他代码合并(包括将编写的程序和预编译的库代码合并),生成可执行文件。

  编译器产生的中间代码保存在目标代码文件(.obj)中,但这还不是一个完整的程序,它缺少启动代码以及库函数等,这些成分的补充需要链接器完成。

  有些系统中,编译器工作时会自动启用链接器,而有些则需要分别运行编译程序和链接程序才能得到可执行文件。

  UNIX系统下的c编程。首先编辑源代码,在UNIX系统下编译可以用cc命令。如

    cc example.c

  就对example.c源代码文件进行了编译,用 ls 命令可以看到编译后生成了可执行文件a.out。输入

    a.out

  可以执行该可执行文件得到程序的输出。

  c编译器在编译时会生成与源代码基本名相同的目标代码文件,扩展名为 .o ,但是一旦链接器生成了完整的可执行文件这个 .o 文件就会被删除。但是当原始程序有多个源代码文件时,目标代码文件会被保留。

  

  ……

  GNU项目中的一个编译器集合GCC中包含着GCC C编译器,使用gcc命令便可调用GCC C 编译器。

  LLVM项目是一个与编译器相关的开源软件集合,它用Clang编译器处理c代码,可通过clang调用。

  GCC和Clang编译器都对最新版本的C标准提供支持。

  两者都可以通过-v显示版本信息,也都可以使用 cc 来作为gcc或clang的别名,如

    cc -v

  可以显示所使用的编译器及其版本。

C语言,初次见面~的更多相关文章

  1. 一封推荐信——android培训机构

    我,男,23岁,即将毕业的大四学生,就读于天津一所二本院校,计算机科学与技术专业.大一期间,进入新校园,和同学到各个宿舍推销陶瓷杯,国美电器饮水机促销员,组团蹬车游市区,不断地去探索.尝试,追求内心向 ...

  2. 与TCP/IP协议的初次见面(一)

    与TCP/IP协议的初次见面(一) 前言 今下午刚才女朋友那边回来,唉,算是情人节去找她吧,穷屌丝住不起好酒店,住的打折酒店,只是女朋友来姨妈了,万幸啊,牙还疼得不行,这几天光照应她了,没空写博客了. ...

  3. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  4. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  5. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  6. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  7. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  8. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  9. Atitit 项目语言的选择 java c#.net  php??

    Atitit 项目语言的选择 java c#.net  php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...

随机推荐

  1. case选择语句

    #!/bin/bash   PS3="please select menu:"   select  i  in "Apache" "Mysql&quo ...

  2. impala安装笔记(Ubuntu)

    1.Override 1.With Impala, you can query data, whether stored in HDFS or Apache HBase – including SEL ...

  3. January 17 2017 Week 3 Tuesday

    You can't shake hands with a clenched fist. 紧握拳头你就无法与他人握手. If you want to shake hands with others, j ...

  4. python UI自动化实战记录四:测试页面1-pageobject

    该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...

  5. Python切片(入门7)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407977.html 本文出自:[Edwin博客园] Python切片 1. 对list进行切片 L = r ...

  6. Java 学习笔记1

    最近开始学习Java. <%@ page language="java" import="java.util.*" pageEncoding=" ...

  7. UVa 753 - A Plug for UNIX(最大流)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. C/C++心得-理解指针

    上一篇笔者用自己那不是怎么好理解的逻辑介绍了内存和C中的基本数据类型,现在笔者再根据自己重新所学来说说C语言中的指针. 理解指针才能真正的算C语言入门.也许是我大学期间太关注前端UE,也许是当初开始学 ...

  9. 【洛谷P1373】小a和uim之大逃离

    小a和uim之大逃离 题目链接 因为每次只能向下或向右走,我们可以递推 dp[i][j][d][0/1]表示走到(i,j),mod k 意义下差值为d,轮到小a/小uim操作时的方案数 dp[i][j ...

  10. java Scanner和异常

    Java Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scann ...