zoukankan      html  css  js  c++  java
  • C语言特性


    1. C: Dennis Ritchie于1972年在贝尔实验室开发出来;是一种命令式语言(imperative system language)


     注:命令式语言又称强制式语言,通过指明一系列可执行的运算及运算的次序来描述计算过程的语言。平时我们用的大多数语言(比如,C,C+,Java,C#,Python等)都是命令式语言。与它相对的是函数式语言(functional language),如Haskell,Lisp。函数式语言更像数学,命令式语言更接近人的思维。

     

    2. C的典型特征:

     1)编译型语言(compiled language)(相对于解释型语言来说)

       编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接运行编译的结果就行了。因此效率高

       解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低

     2)命令式的

     3) 人工管理内存

     4)当需要涉及以下问题时使用C:

       -速度

       -内存

       -低层次特性(low-level features),如:移动stack pointer等

     

    3. 内存抽象的层次(从内存的角度思考C...)
     

      抽象层次                        编程语言

      --------------------------------------

      直接操作内存                     汇编语言

      访问内存                         C,C++

      内存自动管理                     Java,C#,Scheme/LISP,ML

     

    4. C访问的内存:堆(heap)

       堆是一块儿用于动态内存分配的内存区域

       1)把它想像称为一个巨大的数组

       2)通过指针(pointer)来访问

       3)整个程序都能访问堆(如果操作系统允许的话)

     

    5. 人工内存管理

      目的:

      1) 允许程序能够分配内存用于当前的使用

      2)当程序执行完后,能够释放内存,用于重新分配

      C语言的标准类库(standard library)中有malloc和free两个函数支持内存管理

     

    6. 其它C访问的内存:棧(stack)

      C函数将会分配到棧中:

      1)函数在被调用时进棧(pushed on to stack)

      2) 函数在返回时出棧(popefd off the stack)

      3) 函数能访问当前棧顶部以下的所有内存(这里所谓的“顶部一下”如下图所示)
  • 相关阅读:
    Web大规模高并发请求和抢购的解决方案
    常用的排序算法
    Kafka中的消息是否会丢失和重复消费(转)
    excel操作之poi-ooxml
    spring-boot-configuration-processor 是干啥用的
    递归和尾递归的区别和原理(转)
    kafka接口文档和kafka教程
    quartz (从原理到应用)详解篇(转)
    Elastic-Job开发指南(转)
    SimpleDateFormat线程不安全及解决办法(转)
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/1967637.html
Copyright © 2011-2022 走看看