基本特性
1、 高级语言:它是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。
2、 结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
4、 代码级别的跨平台:由于标准的存在,使得几乎同样的C代码可用于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要进行硬件操作的场合,优于其它高级语言。
5、 使用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。

特有特点

  • C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
  • C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
  • 不同的变量类型可以用结构体(struct)组合在一起。
  • 只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
  • 部份的变量类型可以转换,例如整型和字符型变量。
  • 通过指针(pointer),C语言可以容易的对存储器进行低级控制。
  • 预编译处理(preprocessor)让C语言的编译更具有弹性。

优缺点
优点
1、 简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、 运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、 数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、 表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。
5、 允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
6、 生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。
7、 可移植性好
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
8、 表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

缺点
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。

2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。

更多C语言内容了解:

带你学C带你飞

更多精品课程:

7天玩转云服务器

云数据库的Redis版使用教程

玩转云存储对象存储OSS使用入门

阿里云CDN使用教程

负载均衡入门与产品使用指南

阿里云大学官网(阿里云大学 - 官方网站,云生态下的创新人才工场)

【零基础】带你学C带你飞相关推荐

  1. Python编程语言好学吗? 零基础转行能学Python吗?

    Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...

  2. 小甲鱼老师《带你学C带你飞》的后续课程补充

    小甲鱼老师的<带你学C带你飞>系列之前有预告,说有机器人电子制作的续集,但是这么久了还是没有等到,博主在这里根据自己的学习经历,推荐一些学习的资料,可以为小甲鱼老师填一下坑,读者可根据自己 ...

  3. C语言学习笔记《带你学C带你飞》P21-P40

    文章目录 21.指针 22.指针和数组 23.指针数组和数组指针 24.指针和二维数组 25.void指针和NULL指针 26.指向指针的指针 27.常量和指针 28.函数 29.参数和指针 30.指 ...

  4. 零基础小白如何学习好UI设计

    智能时代的来临,很多企业都越来越注重用户体验这一块,想要有一个吸引用户的好页面,UI设计师岗位不可或缺,如今越来越多的人想要学习UI设计技术,那么对于零基础小白如何学习好UI设计呢? 零基础小白如何学 ...

  5. 零基础可以学python吗-Python编程语言好学吗?零基础转行能学Python吗?

    Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...

  6. python零基础能学吗-Python编程语言好学吗?零基础转行能学Python吗?

    Python编程语言好学吗?零基础转行能学Python吗?人工智能时代的来临催生了很多新兴行业,Python是最具代表性也是比较热门的技术之一.有人看好Python入门简单.功能强大的特性,选择转行从 ...

  7. 原画师培训需要多少学费?原画师零基础一般要学多久

    游戏行业这几年持续升温,无论手游,网游还是页游,研发都需要游戏原画环节.数据统计这个行业至少需要15万名游戏原画师,而现在在职以及在学的游戏原画师还远远不及这个数字. 有着这个巨大的市场,游戏原画培训 ...

  8. Asky极简教程:零基础1小时学编程,已更新前8节

    Asky极简架构 开源Asky极简架构.超轻量级.高并发.水平扩展.微服务架构 <Asky极简教程:零基础1小时学编程>开源教程 零基础入门,从零开始全程演示,如何开发一个大型互联网系统, ...

  9. 黑客技术零基础入门怎么学(黑客初级入门)

    本篇文章给大家谈谈黑客技术零基础入门怎么学,以及黑客初级入门对应的知识点,希望对各位有所帮助. 本文目录一览: 1.黑客零基础入门 2.怎样自学黑客技术? 3.学习黑客需要先学习什么基础?(零基础) ...

最新文章

  1. 大数据处理时用到maven的repository
  2. nginx的一次安装与配置
  3. UA MATH567 高维统计III 随机矩阵4 欧氏空间上的集网与覆盖
  4. 爬虫 python 爬取php的网页,带有post参数的网页如何爬取
  5. javascript-封闭函数的定义与使用
  6. slf4j在linux位置,SLF4J环境设置
  7. CentOS安装nginx方法命令教程
  8. 书籍推荐——按角色划分
  9. Java里的阻塞队列
  10. Linux 系统下对目录扩容的方法
  11. 阶段3 2.Spring_07.银行转账案例_3 分析事务的问题并编写ConnectionUtils
  12. 国服游戏封包解密-外挂制作全过程
  13. H5微信分享自定义标题和图片的实现及遇到的各种坑
  14. (转)罗振宇跨年演讲:哪来直接登顶的人生,只有不断迭代的历程
  15. unity lookat导致物体颠倒怎么解决_在Unity 2D中如何用一行代码实现LookAt的效果,以及向量归一化小总结...
  16. 分组、分类(分组汇总)
  17. 《猎罪图鉴》中暴露出人脸识别安全隐患,你的脸或许正被仿冒
  18. C++笔记--Linux网络编程(15-0)-socket(供自查,文档说明)
  19. Python第二次作业——判断句
  20. vue中路由按需加载的几种方式

热门文章

  1. unity入门_探索Unity MARS入门模板
  2. 2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】
  3. 目前电子计算机已经发展到______阶段,考试题目及参考答案
  4. 【动态内存管理】动态内存函数简析
  5. 区块宝周报:区块链一周大事排行榜0930
  6. 软件工程导论——6软件质量保证
  7. 为什么说Mac OS X的菜单栏是糟糕的设计
  8. 编码风格(Coding Style)和编程准则(Programming Guidelines)
  9. 对信号加频偏的数学处理
  10. 华中师范大学新生研讨课有感