科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科
  • 人气指数: 11726 次
  • 编辑次数: 1 次 历史版本
  • 更新时间: 2009-03-18
admin
admin
发短消息
相关词条
bat
bat
Processing语言
Processing语言
固件
固件
SSID
SSID
LAMP
LAMP
Flash和HTML5
Flash和HTML5
沙盒
沙盒
六种主要计算机语言优缺点
六种主要计算机语言优缺点
系统集成
系统集成
间谍软件
间谍软件
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
2017年特斯拉
2017年特斯拉
MIT黑客全纪录
MIT黑客全纪录
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构


目录

[显示全部]

【C 概述】编辑本段回目录

  C语言是一种面向过程的计算机程序设计语言。最初为unix而生。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。
  C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。
  C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维二维图形动画。它是数值计算的高级语言。支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

【语言发展】编辑本段回目录

 (图)C  C语言是在70年代初问世的。一九七八年由美国电话电报公司AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(BjarneStroustrup)博士在20世纪80年代初期发明并实现了C(最初这种语言被称作“CwithClasses”)。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THECPROGRAMMINGLANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C语言标准,于一九八三年发表。通常称之为ANSIC。一开始C是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtualfunction)、运算符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常(exception)、RTTI、名字空间(namespace)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C程序设计语言的国际标准ISO/IEC14882-1998。C是具有国际标准的编程语言,通常称作ANSI/ISOC。1998年是C标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新将是在2009年,目前我们一般称该标准C0x。遗憾的是,由于C语言过于复杂,以及他经历了长年的演变,直到现在(2004年)只有少数几个编译器完全符合这个标准(这么说也是不完全正确的,事实上,至今为止没有任何一款编译器完全支持ISOC)。
  另外,就目前学习C而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C。根据《C编程思想》(ThinkinginC)一书所评述的,C与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。

        总的来说,C语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C已经成为当今主流程序设计语言中最复杂的一员。

【子语言】编辑本段回目录

  根据Effective C 第三版第一条款的描述,现在C 由以下四个“子语言”组成:
  1、C子语言。C 支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C 标准文献)。
  2、面向对象的C 。C 首先作为一门面向对象的语言而闻名,这个特点在这里不再详述。
  3、泛型编程语言。C 强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。
  4、STL(C 标准模板库)。随着STL的不断发展,它已经逐渐成为C 程序设计中不可或缺的部分,其效率可能比一般的naive代码低些,但是其安全性与规范性使它大受欢迎。 

【C 的设计原则】编辑本段回目录

  ? C 设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
  ? C 设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
  ? C 设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
  ? C 设计成尽可能与C兼容,籍此提供一个从C到C 的平滑过渡。
  ? C 避免平台限定或没有普遍用途的特性。
  ? C 不使用会带来额外开销的特性。
  ? C 设计成无需复杂的程序设计环境。
  出于保证语言的简洁和运行高效等方面的考虑,C 的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C 之父的《C 语言的设计和演化》 里做了详尽的陈述。

【C 的Hello World程序】编辑本段回目录

  在使用兼容C89标准(也称为ANSI C)的编译器时,下面这个程序显示“Hello, world!”然后结束运行:
  (事实上这并不是符合98标准[ISO C ]的C 程序,而且在多数编译器上这个程序也不能运行,若要在比较旧的编译器上编译该程序,应将iostream改为iostream.h)
  #include
  int main()
  {
  printf("Hello, world!n");
  return 0;
  }
  在使用兼容C 99标准(ISO/IEC 14882-1998)的编译器时,下面的程序也是可以的:
  #include
  using namespace std;
  int main()
  {
  cout << "Hello, world!" << endl;
  return 0;
  }
  根据ISO C 的规定,main函数的形式只能是
  int main(void)
  {
  ...
  }
  以及
  int main(int argc,char * argv[])
  {
  ...
  }
  尽管如此,但在大部份(其实是在Windows平台下的大部分,主要是VC系列编译器)编译器上,
  void main()
  {
  ...
  }
  也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。

【C 程序员的数量】编辑本段回目录

  分析机构EvansData定期对开发人员展开调查,其调查结果与Stroustrup提出的C 正在扩张的说法相违背。EvansData的数据显示,以C 为工具的开发人员在整个开发界所占的比例由1998年春天的76%下降至2004年秋的46%。
  Forrester最新的调查显示,C 、微软VisualBasic和Java是众多公司产品体系的首选语言。对100家公司的调查显示,C/C 、VisualBasic和Java在产品体系中的使用比例分别是59%、61%和66%。
  传统上认为,C 相对于目前一些新潮的语言,如Java、C#,优势在于程序的运行性能。这种观念并不完全。如果一个人深信这一点,那么说明他并没有充分了解和理解C 和那个某某语言。同时,持有这种观念的人,通常也是受到了某种误导(罪魁祸首当然就是那些财大气粗的公司)。对于这些公司而言,他们隐藏了C 同某某语言间的核心差别,而把现在多数程序员不太关心的差别,也就是性能,加以强化。因为随着CPU性能的快速提升,性能问题已不为人们所关心。这叫“李代桃僵”。很多涉世不深的程序员,也就相信了他们。于是,大公司们的阴谋也就得逞了。
  一般认为,使用Java或C#的开发成本比C 低。但是,如果你能够充分分析C 和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C 的优势将会越来越明显。造成这种差别的就是C 的软件工程性。在Java和C#大谈软件工程的时候,C 实际上已经悄悄地将软件工程性提升到一个前所未有的高度。这一点被多数人忽视,并且被大公司竭力掩盖。
  语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。(实际上,面向对象和泛型编程的起源都可以追溯到1967年,但由于泛型编程更抽象,所以应用远远落后于面向对象)。

【C 语言的应用】编辑本段回目录

  哪些程序是用C 写的:
  主流的3种操作系统Windows,Linux,Unix,内核都是用C语言和汇编写的,上层高级特性是用C 写的。
  《魔兽世界》等几乎所有的网络游戏,百度搜索引擎(Baidu.com),我们所用的大多数软件都是用C 写的(硬件也有很多用到C 的)。
  C 之父Bjarne Stroustrup列举的C 应用:
  Amazon.com:Software for large-scale e-commerce
  Apple: OS X is written in a mix of language, but a few important parts are C . The two most interesting are
  AT&T:The largest US telecommunications provider.
  o provisioning systems
  o systems for rapid network recovery after failure
  Autodesk: A large number of major number of application in the CAD domain
  Ericsson:o server platform.
  o TDMA-CDMA HLR
  o GSM-TDMA-CDMA mobility gateway
  Google: web search engine, etc。
  HP: Here is a tiny fraction of HP's C apps:
  o C, C , Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C code).
  IBM: o OS/400.
  o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.
  Intel:o Vtune performace analysis software
  o compilers and optimizers
  o lots of chip design and manufacturing software
  JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C on Mars! Also lots of supporting software "on the ground" (i.e. Earth).
  Microsoft:o Windows XP
  o Windows NT (NT4 and 2000)
  o Windows 9x (95, 98, Me)
  o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)
  o Internet Explorer (including Outlook Express)
  o Visual Studio
  o SQL
  Mozilla: Firefox browser and Thunderbird mail client (open source)
  MySQL: MySQL Server (about 250,000 lines of C ) and MySQL Cluster. Arguably the world's most popular open source database
  Nokia: o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).
  o MSC/HLR
  Sun: o The HotSpot Java Virtual Machine is written in C
  Symbian OS: rationale: "[...] using C for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones
  KDE from linux is written in C .
  telephone systems: I think it would be almost easier to list the systems which aren't written in C
  更详细的应用列表1:http://www.research.att.com/~bs/applications.html
  更详细的工业列表2:http://www.lextrait.com/vincent/implementations.html

【C 编程技巧】编辑本段回目录

   一、使用new和delete进行动态内存分配和释放
  运算符new和delete是C 新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:
  (1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
  (2)自动地返回正确的指针类型,不用进行强制指针类型转换。
  (3)可以用new对分配的对象进行初始化。
  使用例子:
  (1)int* p;
  p=new int[10]; //分配一个含有10个整数的整形数组
  delete[] p; //删除这个数组
  (2)int* p;
  p=new int (100);//动态分配一个整数并初始化
   二、使用inline内连函数替代宏调用
  对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a) ((a)<0?(-a):(a)), 当使用abs(i )时,这个宏就会出错。
  所以在C 中应该使用inline内连函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。
  使用内连函数只须把inline关键字放在函数返回类型的前面。例如:
  inline int Add(int a,int b);//声明Add()为内连函数
  这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
   三、使用函数重载   在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C 中,函数名相同而参数数据类型不同的两个函数被解释为重载。例如:
  void PutHz(char* str);//在当前位置输出汉字
  void PutHz(int x,

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

标签: C

收藏到: Favorites  

同义词: 暂无同义词

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。