• C Primer Plus学习笔记(十一)- 存储类别、链接和内存管理


    存储类别

    从硬件方面来看,被储存的每个值都占用一定的物理内存,C 语言把这样的一块内存称为对象(object)

    对象可以储存一个或多个值。一个对象可能并未储存实际的值,但是它在储存适当的值时一定具有相应的大小

    int entity = 3;
    

    该声明创建了一个名为 entity 的标识符(identifier)。标识符是一个名称,在这种情况下,标识符可以用来指定(designate)特定对象的内容

    标识符 entity 即是软件(即 C 程序)指定硬件内存中的对象的方式。该声明还提供了储存在对象中的值

    变量名不是指定对象的唯一途径

    int rank[10];
    

    rank 的声明创建了一个可容纳 10 个 int 类型元素的对象,该数组的每个元素也是一个对象

    const char * pc = "Hello World";
    

    程序根据该声明把相应的字符串字面量储存在内存中,内含这些字符值的字符串字面量就是一个对象。由于字符串字面量中的每个字符都能被单独访问,所以每个字符也是一个对象

    该声明还创建了一个标识符为 pc 的对象,储存着字符串的地址

    由于可以设置 pc 重新指向其他字符串,所以标识符 pc 是一个可修改的左值

    const 只能保证被 pc 指向的字符串内容不被修改,但是无法保证 pc 不指向别的字符串

    由于 *pc 指定了储存 'B' 字符的数据对象,所以 *pc 是一个左值,但不是一个可修改的左值

    字符串字面量本身指定了储存字符串的对象,所以它也是一个左值,但不是可修改的左值

    可以用存储期(storage duration)描述对象

    存储期是指对象在内存中保留了多长时间

    标识符用于访问对象,可以用作用域(scope)和链接(linkage)描述标识符,标识符的作用域和链接表明了程序的哪些部分可以使用它

    不同的存储类别具有不同的存储期、作用域和链接

    标识符可以在源代码的多文件中共享、可用于特定文件的任意函数中、可仅限于特定函数中使用,甚至只在函数中的某部分使用

    对象可存在于程序的执行期,也可以仅存在于它所在函数的执行期

    对于并发编程,对象可以在特定线程的执行期存在

    可以通过函数调用的方式显示分配和释放内存

    作用域

    作用域描述程序中可访问标识符的区域

    一个 C 变量的作用域可以是块作用域、函数作用域、函数原型作用域或文件作用域

    块是用一对花括号括起来的代码区域

    例如,整个函数体是一个块,函数中的任意复合语句也是一个块

    定义在块中的变量具有块作用域(block scope),块作用域变量的可见范围是从定义处到包含该定义的块的末尾

    虽然函数的形式参数声明在函数的左花括号之前,但是它们也具有块作用域,属于函数体这个块

    使用的局部变量(包括函数的形式参数)都具有块作用域

  • 相关阅读:
    渡一 20 date对象,定时器
    渡一 22 事件
    渡一 21获取窗口属性,dom尺寸,脚本化css
    渡一 18&19 选择器,节点类型&Dom基本操作
    渡一 16-2 dom操作初探
    渡一 16-1 try..catch,es5标准模式
    iOS 相关职位要求整理版
    Mac使用技巧
    issues about Facebook Login
    10_Segue Example
  • 原文地址:https://www.cnblogs.com/sch01ar/p/9343620.html
Copyright © 2020-2023  润新知