C 是什么样的语言?
学习交流可加
微信读者交流①群 (添加微信: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)
- 不要阻止程序员去做需要做的工作(Don't prevent the programmer from
doing what needs to be done) - 保持语言的小巧和简单(Keep the language small and simple)
- 为每一种操作只提供一种方法(Provide only way to do an operation)
- 就算不能保证可移植性,也要追求运行效率(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 是什么样的语言?的更多相关文章
- C语言 · 高精度加法
问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...
- Windows server 2012 添加中文语言包(英文转为中文)(离线)
Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- C语言 · Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...
- C语言 · 字符转对比
问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- Atitit 项目语言的选择 java c#.net php??
Atitit 项目语言的选择 java c#.net php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- InstallShield 脚本语言学习笔记
InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加. 一.基本语法规则 ...
- 用C语言封装OC对象(耐心阅读,非常重要)
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...
随机推荐
- Linux(CentOS)启动时自动执行脚本(rc.local)
一.Linux开机启动有多种方法,比如我设置mysql开机启动为:chkconfig --level 35 mysqld on 二.下面说说通过rc.local文件进行开机启动: 1.首先创建一个启动 ...
- Docker使用 - 容器
查看容器 命令:docker ps [options] options有: -a:查看所有容器,包含不在运行中的(不带-a参数,是只显示运行中的容器) -q:只显示容器ID -s:多加一列来显示总 ...
- Linux下查看占用CPU资源最多的几个进程
linux下获取占用CPU资源最多的10个进程: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下获取占用内存资源最多的10个进 ...
- PHP urlencode空格被转为+的问题
我想既然各位点进来,绝大数是因为你遇到了空格被转为+号所带来的坑 不过没关系,解决方案很简单:使用rawurlencode()来进行编码即可~此函数遵循RFC 3986标准,空格会被转为%20 同时, ...
- 008 SpringCloud 学习笔记4-----Ribbon负载均衡
1.Ribbon概述 实际环境中,我们往往会开启很多个itcast-service-provider的集群.此时我们获取的服务列表中就会有多个,到底该访问哪一个呢? Eureka中已经帮我们集成了负载 ...
- 安卓学习日记第二天——Fragment
一.基本概念 Fragment是依赖于Activity的,不能独立存在的. 一个Activity里可以有多个Fragment. 一个Fragment可以被多个Activity重用. Fragment有 ...
- Hive drop table,create table没有反应处理方法
Hive drop table时没有反应,于是强制中断. 解决之法,对其进行补充. mysql> show variables like 'char%';第一步:进入mysql,输入:show ...
- Go 关键字Select
select select 是Go语言中常用的一个关键字,Linux再也早也引入了这个函数,用来实现非阻塞的一种方式,一个select语句用来选择哪个case中的发送或接收操作可以被立即执行.它类似于 ...
- k8s 回滚应用
kubectl apply 每次更新应用时 Kubernetes 都会记录下当前的配置,保存为一个 revision(版次),这样就可以回滚到某个特定 revision. 滚动更新是一次只更新一小部分 ...
- 未能加载文件或程序集 Microsoft.ReportViewer.ProcessingObjectModel, Version=10.0.0.0
写在前面 整理错误集.某一天在启动项目的时候,出现了未能加载文件或程序集 Microsoft.ReportViewer.ProcessingObjectModel, Version=10.0.0.0错 ...