• C++的几个注意点


    1.static全局变量与普通的全局变量有什么区别: static全局变量只初使化一次,防止在其他文件单元中被引用;

      static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值(静态局部变量是指在函数体内声明和定义的局部变量,它仅供本函数使用,即其他函数不能调用它。静态局部变量的值在函数调用结束后不消

    失而保留原值,即其占用的存储单元不释放,在下一次函数调用时,该变量已有值,就是上一次函数调用结束时的值。 静态局部变量在静态存储区分配存储单元,在程序的整个运行期间都不释放。静态局部变量是在编译时赋初值的,即只赋初值一次。)

      static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝程序的局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在于( 堆)中。

     

    2.变量的定义:为变量分配存储空间,同时指明变量的类型和名字。另外变量的初始化,就是在变量的定义出给出值。

    变量的声明:它主要向程序声明变量的类型和名字。定义也是声明(这是许多人搞不清楚的地方),那既然变量的定义就是声明,为啥还要再多出来个变量的声明这个概念,直接就用变量的定义不是就可以了?

    其实不然,C++中有个关键字是用来声明变量的,它是extern。它声明一个变量却不定义它,即不在给它一个存储空间。

    例如:int i;//定义也可以说是声明

    extern int i;//这就是单纯的声明

    注意:在C++语言中,变量有且只能有一次定义,但是可以声明多次,使用变量前必须定义或声明。

    声明是告诉编译器有一个变量或函数,并标明是什么类型的.
    而定义,是明确告诉编译器,这个变量或函数的值和实现方式.

    一般来讲,声明变量并不会占用存储空间,而定义变量会占用存储空间.声明函数只提供函数的格式,定义函数则提供函数的实现代码.

    3.通常,局部变量只定义不声明,而全局变量多在源文件中定义,在头文件中声明。

     

    4.全局变量 在函数之外定义的变量称为外部变量,外部变量是全局变量,它可以为本文件中其他函数所共用。全局变量都是静态存储方式,都是在编译时分配内存,但是作用范围有所不同。

    静态外部变量static 静态外部变量只能在本文件中使用。所以静态外部变量应该在当前源文件中声明和定义。
    两者区别:
    全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
     
    5.外部变量extern 定义函数中的全局变量时,其缺省格式是外部变量类型。外部变量应该在一个头文件中声明,在当前源文件中定义。外部变量允许其他文件引用。
     
    6.寄存器变量register 带register修饰符的变量暗示(仅仅是暗示而不是命令)编译程序本变量将被频繁使用,如果可能的话,应将其保留在CPU的寄存器中,以加
    快其存取速度。对于现有的大多数编译程序,最好不要使用register修饰符。
  • 相关阅读:
    基于linux、c的倒排索引
    关于A类,B类,C类IP地址的网段和主机数的计算方法
    如何找出字典中的兄弟单词
    简单验证码识别程序(源码)
    (一)SVM的八股简介
    验证码识别程序
    倒排索引
    验证码识别技术 Captcha Decode Technology
    字符串的组合
    C# 中panel的mousewheel事件触发 (转)
  • 原文地址:https://www.cnblogs.com/Yogurshine/p/2863382.html
Copyright © 2020-2023  润新知