变量

 【1】变量基础
变量在程序中使用时,必须预先说明他们的存储类型和数据类型。
        变量说明的一般形式:
        <存储类型> <数据类型> <变量名>;
            <存储类型>是关键词 auto、register、static和extern
            <数据类型>可以是基本数据类型,也可以是自定义的数据类型
变量名由用户根据其用途命名,变量名命名遵从标识符的起名规则
在程序运行时,变量占据一定大小的存储空间,其大小由其数据类型来决定的,作为某变量的内存空间的首地址,称为变量的地址。


【2】标识符起名规则
    标识符是由程序员按照命名规则自行定义的词法符号,用于定义宏名、变量名、函数名和自定义类型名等。C语言的命名规则如下:
    1) 标识符由一个或多个字母、数字或下划线组成
    2)标识符的第一个字符必须是字母或下划线
    3)标识符不能与任何关键字相同

【3】关键字
    auto          break         case         char           const
    continue      default       do           double         else
    enum          extern        float        for            goto
    if            int           long         register       return
    short         signed        sizeof       static         struct
    switch        typedef       union        unsighed       void
    volatile      while  


【4】变量的存储类型有4种auto/register/static/extern


【5】auto关键字
(1)用auto存储类型说明的变量都是局部于某个程序范围内的,只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。
(2)变量临时存储在栈空间中,当程序执行完成后自动释放该栈空间,使用时不初始化值不确定,每次调用的时候不保持上一次的值
    (3)C语言中,在函数体的某程序段内说明auto存储类型的变量时可以省略关键字auto。


【6】register关键字
(1)使用register关键词说明的变量主要目的是想将所说明的变量放入CPU的寄存器存储空间中,这样可以加快程序的运行速度。
    (2)CPU内部的寄存器很有限,所以当寄存器不够用时编译时不会报语法错误,但变量也照样存储在内存当中
    (3)register关键字修饰的变量存在CPU当中,没有地址的概念,所以不可以对其进行取地址操作
    (4)全局变量存储在内存当中不可以用该关键字修饰,局部


【7】extern关键字
(1)extern称为外部参照引用型,使用extern说明的变量是想引用在其它文件中函数体外部说明的变量。
    (2)当变量在一个文件中的函数体外说明,所有其他文件中的函数或程序段都可引用这个变量 -- 全局变量


【8】static关键字(static称为静态存储类型)
(1)在函数体内使用static修饰的变量也是局部变量,与auto最大不同点是static类型的变量存储在内存中的固定地址,而不是以栈方式存放的。
只要整个程序还在继续运行静态局部变量就不会随着说明它的程序段的结束而消失,下次再调用该函数时,该存储类型的变量不再重新说明,且还保留上次调用存入的数值。
(2)在函数体外使用static修饰的变量(全局变量)其他文件不能引用


【9】全局变量
(1)全局变量在任何位置都可以调用
(2)全局变量不初始化其值默认为0
(3)每次使用都保持以前的值,存储在全局的数据段,每次使用完后都保持不变

【10】多文件编译
gcc 1.c 2.c -o out

gcc -c 1.c -o 1.o
gcc -c 2.c -o 2.o
gcc 1.o 2.o -o out
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值