C++变量

来源:互联网 发布:视频展示台软件 编辑:程序博客网 时间:2024/06/05 11:07

1. 变量的链接类型:

a. 外部链接:变量位于所有函数外部

b. 内部链接:用static修饰且位于所有函数外部的变量

c. 无链接:用static修饰且位于函数内部的变量

注:链接性味内部的变量只能在其所属的文件中使用;常规变量都具有外部链接性;链接性为外部的变量可以在其它文件中使用。


2. C++单定义规则:变量只能一次定义。但是,在C++中,在每个使用外部变量的文件中,都必须声明它。为满足这种需求,C++提供了两种变量声明:

a. 定义声明:简称定义(definition),它给变量分配存储空间;

b. 引用声明:简称声明(declaration),它不给变量分配空间,因为它引用已有的变量。

注:引用声明使用关键字extern .且不能进行初始化;否则,声明为定义,导致分配存储空间。


3. 在多个文件中使用外部变量

如果在多个文件中使用外部变量,只需在一个文件中包含变量的定义(单定义规则),但在使用改变量的其他所有文件中,都必须使用extern声明他。


4. 函数中声明的一个变量与全局变量同名,这种声明将被视为一个自动变量的定义,当程序执行自动变量所属的函数时,该变量位于作用域内;自动变量将隐藏同名的全局变量。


5. 如果要在其他文件中使用相同的名称表示其他变量:

例:

//file01.cpp

int error = 21;


//file02.cpp

int error = 12;

注:这种做法将失败,违反了单定义原则。


6. 如果文件定义了一个静态外部变量,其名称与另一个文件中声明的常规外部变量相同,则在该文件中,静态变量将隐藏常规外部变量。

实例2:

//file03.cpp

int error = 23;


// file04.cpp

static int error = 26;

......    .....

注:这里没有违反规则,因为关键字static指出标识符error 的链接性为内部,因此并非提供外部定义。

7. 内联函数

定义:内联函数的编译代码与其他程序代码“内联”起来,也就是说,编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置执行代码,然后再跳回来。因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多的内存。

b. 内联函数的使用选择

如果执行函数代码的时间比处理函数调用机制的时间长,则节省的时间将只占整个过程的很小一部分。如果代码的执行时间很短,则内联调用就可以节省非内联调用使用的大部分时间。另一方面,由于这个过程相当快,因此尽管节省了该过程的大部分时间,但节省的时间绝对值并不大,除非该函数被经常调用。

c. 内联函数的使用过程

~1~ 在函数声明前加上关键字inline

~2~ 在函数定义前加上关键字inline

注:通常的做法是省略原型,将整个定义放在本应提供原型的地方;内联函数不能递归。

原创粉丝点击