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. IEEP部署企业级网络工程-OSPF邻居关系故障排除

    OSPF邻居关系故障-现象与排除 一.OSPF邻居关系故障-现象与排除 1.OSPF建立邻居关系时,将检验hello报文中的Area ID .Autype.Authentication.network ...

  2. node-7.2.1 already installed, it's just not linked

    直接在terminal下运行以卸载node和nvm: sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,shar ...

  3. Android(java)学习笔记211:Android线程池形态

    1. 线程池简介  多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.     假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...

  4. Hibernate多对一关联关系

    两个持久化类.Customer 和 OrderForm Customer 类. package com.zcd.hibernate.manyToOne; public class Customer { ...

  5. __call、__set 和 __get的用法

    1. __call的用法 PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法.如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用. 例:__ ...

  6. [HNOI2007]紧急疏散EVACUATE

    嘟嘟嘟 看数据范围,第一反应觉得爆搜是不是能骗点分,但发现爆搜太难写了,于是就开始想想正解…… 正解大概猜到了是网络流,但是怎么把时间这个条件加入到图的内容中,却困扰了我好半天,总是感觉把这种不同维度 ...

  7. LayIM.NetClient 组件开发记录

    前言 好久没写博客了.前阶段看了下Hangfire组件,后来对其代码比较感兴趣,当时不太了解他如何生成的页面和一些访问请求等.后来看了下源代码,发现原来是 OWIN 在搞怪.于是乎开始深入研究Hang ...

  8. halcon 使用elliptic_axis计算规则矩形角度

    elliptic_axis算子是用于计算与Region等价椭圆的相关参数的,注意必须使用规则矩形!!!,不规则区域想其他办法比如模板匹配. elliptic_axis (Region, Ra, Rb, ...

  9. MacBook常用快捷键

    MacBook常用快捷键: 1. 窗口操作: cmd+n 新建一个窗口/文件. cmd+m 窗口最小化. cmd+w 关闭当前窗口/文件. 2. 程序操作: cmd+q 退出当前程序,后台不运行该程序 ...

  10. js的匿名函数与自定义函数

    //匿名方法,会执行,自己调用自己 (function () { console.log(window.innerHeight); })(); (function () { console.log(w ...