《C程序设计(第三版)》-谭浩强——学习笔记

写在前面:已经看过一遍,现在看第二遍,只记想记的

第1章 概述

第2章 算法

第3章 数据类型、运算符与表达式

第4章 顺序程序设计

第5章 选择结构程序设计

第6章 循环控制

第7章 数组

第8章 函数

8.9 变量的存储类别

变量分类:
1、从变量的作用域(空间角度):全局变量与局部变量
2、变量值的存在时间(生存期):静态存储方式与动态存储方式

  • 静态存储方式:程序在运行期间由系统分配固定的存储空间的方式
  • 动态存储方式:在程序运行期间根据需要进行动态分配存储空间的方式

内存中供用户使用的存储空间分为:

  • 程序区:
  • 静态存储区:部分数据,全部的全局变量
  • 动态存储区:存放部分数据,如函数形参、未加static声明的局部变量(自动变量)、函数调用时的现场保护和返回地址

存储类别:分为两大类:静态/动态存储类,具体包含4种(关键字声明方式):自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)

  • 自动的(auto):未声明static存储类别的局部变量,如函数形参、函数中定义变量,存储在动态存储区中。
  • 静态的(static):用static声明的局部变量在函数调用结束后保留原值,其占用的存储单元在函数结束后不释放,在下一次函数调用时使用上一次调用结束时的值
    (1)静态局部变量属于静态存储类别,存储在静态存储区
    (2)在编译时赋初值,若未赋初值则编译时自动赋初值0或空字符
    (3)只有声明该静态局部变量的函数能使用该变量,其余函数不能对该变量进行操作
  • 寄存器的(register):为提高执行效率,将频繁使用的变量放在CPU中的寄存器中,需要时直接从寄存器中取出参与运算不用到内存中去存取。
    (1)只有局部自动变量和形式参数可作为寄存器变量
    (2)系统中寄存器数量有限,每个操作系统对寄存器变量的定义操作各不相同
    (3)一般不用,了解即可
  • 外部的(extern):在函数外部定义的全局变量,作用域:从变量定义到本程序文件末尾,存储在静态存储区,用于扩展外部变量的作用域
    (1)在一个文件内声明外部变量,扩展它在程序文件中的作用域
    (2)在多文件程序中声明外部变量,如一个文件file1定义变量A,其他文件可声明extern A来使用file1中的变量A
    (3)若在程序设计中希望某些外部变量只限于被本文件使用,而不被其他文件使用,可在定义外部变量时加一个static声明,如file1中定义变量A为"static int A",则其他文件在声明extern A时无法使用file1中的变量A
    (4)外部变量均为静态存储方式

【注意】用auto、register、static声明变量时,是在定义变量的基础上加上这些关键字,不能单独使用,如:

  • static int a;(√)
  • int a; static a;(×)

第9章 预处理命令

第10章 指针

第11章 结构体与共用体

第12章 位运算

第13章 文件

第14章 常见错误和程序调试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值