• C语言关键字register、extern、static


    C语言中:

    一、register变量

           关键字regiter请求编译器尽可能的将变量存在CPU的寄存器中。有以下几点注意的地方。

    1. register变量必须是能被CPU寄存器所接受的类型,这通常意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度。但是,有些机器的寄存器也能存放浮点数。
    2. register变量可能不存放在内存中,所以不能用取址符运算符“ & ”。
    3. 只有局部变量和形参可以作为register变量,全局变量不行。
    4. 静态变量不能定义为register。

    二、static

    1、修饰变量(局部和全局变量)

    1.1、静态全局变量

      在全局数据区分配内存;未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化)作用域仅限于变量被定义的文件中。

    全局变量和全局静态变量的区别  

      (1全局变量是不显式用static修饰的全局变量,但全局变量 默认是静态的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中, 通过extern 全局变量名的声明,就可以使用全局变量。

      (2全局静态变量是显式用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。

    1.2、静态局部变量

    2、静态函数

      在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。其它文件中可以定义相同名字的函数,不会发生冲突。

  • 相关阅读:
    C# winIO32位,64位的使用(运行时要用管理员身份)
    C#实现的三种方式实现模拟键盘按键
    C#打印日志的小技巧
    write wall ping ifconfig mail last traceroute netstat setup mount
    安装常用工具 zip unzip bzip2 gcc gcc++编译器 cmake编译器
    gzip/gunzip tar -zcf/-zxvf zip /unzip bzip2/bunzip2 tar -cjf/tar -xjf
    help
    Asp.Net 高性能框架 SqlSugar.ORM 2.3
    centos 查看版本(转)
    浅谈OCR之Tesseract
  • 原文地址:https://www.cnblogs.com/powerzhang/p/3259289.html
Copyright © 2020-2023  润新知