学习交流可加

微信读者交流①群 (添加微信:coderAllen)
程序员技术QQ交流①群:736386324

---
==C 是什么样的语言?==
这个问题不要急于寻找问题的答案,而是应该先去考虑当前的问题是什么?

C语言其实就是一种工具,而且确实也是为作为工具而开发的,所以就具有以下特点
1>为了解决眼前问题,由开发现场的人发明的,
2>虽然使用方便,
3>但看上去不怎么顺眼,
4>如果不熟悉的人糊里糊涂地使用了它,难免会带来“悲剧”的语言。

==C的发展历程==
1978 年出版了被称为 C 语言宝典的 The C Programming Language 一书

==当然作为一门“古老的编程语言”,不完备和不统一的语法使C语言一直被诟病==

==Rationale 中有“keep the spirit of C”(保持 C 的精神) 一节,关于“C 的精神”是这样介绍的:==
**1. 请信任程序员(Trust the programmer)

  1. 不要阻止程序员去做需要做的工作(Don't prevent the programmer from
    doing what needs to be done)
  2. 保持语言的小巧和简单(Keep the language small and simple)
  3. 为每一种操作只提供一种方法(Provide only way to do an operation)
  4. 就算不能保证可移植性,也要追求运行效率(Make it fast, even if it is not guaranteed to be portable)**

==C 是抱着“程序员万能”的理念设计出来的。在 C 的设计中,优先考虑的是==

如何才能简单地实现编译器(而不是让使用 C 的人们能够简单地编程)
如何才能让程序员写出能够生成高效率执行代码的程序(而不是考虑优化编译器,使编译器生成高效率的执行代码)

==C是只能使用标量的语言==

比如为什么 if (str == "abc") 是错误的,因为字符串就是char类型的数组,不是标量,也就不可以用==比较如今的 C(ANSI C) 通过以下几个追加的功能,已经能够让我们整合地使用聚合类型了。

结构体的一次性赋值
将结构体作为函数参数值传递
将结构体作为函数返回值返回
auto 变量的初始化


更多精彩文章扫码关注 [ Allen有话说 ],专注于编程,职场,英语(外企)

C 是什么样的语言?的更多相关文章

  1. C语言 · 高精度加法

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

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

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

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

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

  4. C语言 · Anagrams问题

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

  5. C语言 · 字符转对比

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

  6. JAVA语言中的修饰符

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

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

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

  8. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  9. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  10. 用C语言封装OC对象(耐心阅读,非常重要)

    用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...

随机推荐

  1. 第一次使用markdown

    一级标题 二级标题 三家标题 四级标题 五级标题 六级标题 用两个空格来换行 斜体字 斜体字 加粗字体 加粗字体 斜体加粗字体 斜体加粗字体 无序列表用*或者+或者-: 第一箱 第二项 第三项 第四项 ...

  2. Bootstrap table插件 被选中的行颜色改变

    参考:https://www.jianshu.com/p/1bb4c37ef636 在 bootstrap-table.min.css 中修改源码 //选中行颜色 .fixed-table-conta ...

  3. php的工厂模式

    特点 :将调用者和创建者分离,调用者直接向工厂类请求获取调用对象,减少代码耦合,提高系统的维护性和扩展性. <?php // **** 共同接口 **** // interface DB { f ...

  4. 【Spring Boot学习之八】发布打包

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.打jar类型1.指定主程序入口,否则运行报错:没有主清单属性pom.xml: <build> < ...

  5. PHP urlencode空格被转为+的问题

    我想既然各位点进来,绝大数是因为你遇到了空格被转为+号所带来的坑 不过没关系,解决方案很简单:使用rawurlencode()来进行编码即可~此函数遵循RFC 3986标准,空格会被转为%20 同时, ...

  6. 超详尽-QThread的正确使用姿势-以及信号槽的跨线程使用

    贴上两篇博文 一.http://www.cnblogs.com/findumars/p/5031239.html 循序渐进介绍了,怎样正确的让槽函数工作在子线程中. 同时介绍了信号槽的绑定与线程的关系 ...

  7. PostgreSQL 参数调整(性能优化)

    昨天分别在外网和无外网环境下安装PostgreSQL,有外网环境下安装的相当顺利.但是在无外网环境下就是两个不同的概念了,可谓十有八折.感兴趣的同学可以搭建一下. PostgreSQL安装完成后第一件 ...

  8. springboot异步线程

    前言 最近项目中出现了一个问题,发现自己的定时器任务在线上没有执行,但是在线下测试时却能执行,最后谷歌到了这篇文章SpringBoot踩坑日记-定时任务不定时了?; 本篇文章主要以自己在项目中遇到的问 ...

  9. 手撕面试官系列(六):并发+Netty+JVM+Linux面试专题

    并发面试专题 (面试题+答案领取方式见侧边栏) 现在有 T1.T2.T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 在 Java 中 Lock 接口比 syn ...

  10. 开灯问题—C语言

    开灯问题 有n盏灯,编号为1~n.第1个人把所有灯打开,第2个人按下所有编号为2的倍数开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,以此类推.一共有k个人,问最后哪些灯是开着?输入n和 ...