C语言的特点

C语言的特点

1. 静态弱类型语言,在使用变量时需要声明变量类型,部份变量类型可以转换, 例如整型和字符型变量;

  • 基于C89标准下的隐式类型转换规则:
  1. 算术运算中或者逻辑判断表达式中操作式,不匹配的时候
  2. 赋值时,如果左右操作数类型不匹配
  3. 函数传递进去的实参和匹配的形参对应不上
  4. 函数返回的表达式的类型和函数返回类型不匹配
  • 强制类型转换
(type_name)expression

2. 只有32个保留字,使变量、函数命名有更多弹性
图片取自 Microsoft Docs
但其实c99及之后已经不止32个保留字了,(说实话我get不到这个特点的意义在哪里??)

3. 不同的变量类型可以用结构体(struct)组合在一起,以此来声明新的数据类型
不同类型的数据存放在一起,方便作为一个整体进行处理。结构体的作用并不仅仅是为了简便,其最主要的是封装。封装的一个好处就是可以再次利用。另一个好处就是使用者不必关心这个是什么,只要根据定义使用就可以了。

4. C语言是一个有结构化程序设计、具有变量作用域以及递归功能的过程式语言。
C语言程序设计的结构有:顺序结构,选择结构 ,循环结构 ,跳转语句;总共分为9条语句,实现程序结构化编程,使程序具有逻辑性,层次性。
顺序结构没啥好说的,就是从上往下依次执行,是程序的整体的趋势。
选择结构的语句有: if 语句, switch语句
循环结构的语句有:for语句,while语句,do-while语句
跳转语句有:breakcontinuegotoreturn

5. 传递参数一般是以值传递,也可以以址传递(指针)
值传递 使用变量、常量、数组元素作为函数参数,实际是将实参的值复制到形参相应的存储单元中,即形参和实参分别占用不同的存储单元,这种传递方式称为“参数的值传递”或者“函数的传值调用”。
值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。

6.使用用 typedef 关键字来定义类型的别名,以此来达到变量类型的抽象
一种常用的使用场景是使用 typedef 来定义与平台无关的类型,当跨平台移植程序时,只需要修改一下 typedef 的定义即可,而不用对其他源代码做任何修改。标准库中就广泛地使用了这个技巧:

#ifndef _SIZE_T_DEFINED
#ifdef  _WIN64
typedef unsigned __int64    size_t;
#else
typedef _W64 unsigned int   size_t;
#endif
#define _SIZE_T_DEFINED
#endif

大部分时候,也会使用 typedef 来为自定义数据类型(结构体、共用体和枚举类型)、数组、指针等定义简洁的类型名称。

7.通过指针,C语言可以容易的对存储器进行低级控制
在C语言中,指针的使用非常广泛,因为使用指针往往可以生成更高效、更紧凑的代码。总的来说,使用指针有如下好处:
1)指针的使用使得不同区域的代码可以轻易的共享内存数据,这样可以使程序更为快速高效;
2)C语言中一些复杂的数据结构往往需要使用指针来构建,如链表、二叉树等;
3)C语言是传值调用,而有些操作传值调用是无法完成的,如通过被调函数修改调用函数的对象(例如swap() 函数),但是这种操作可以由指针来完成,而且并不违背传值调用。

8. 预编译处理让C语言的编译更具有弹性
C语言的三种预处理包括:宏定义(#define)、文件包含(#include)、条件编译(#if、#else、#endif)
C语言源码生成过程:

C源程序
预编译
编译
优化程序
汇编程序
链接程序
可执行文件

其中预编译阶段,也就是编译预处理阶段,读取C源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。
在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。


正是C 语言的这些特性,使得程序员可以在微观层面进行非常精细的编程操作,在底层和系统细节上非常自由、灵活和精准地控制代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值