不同存储类型的变量的声明、内部函数、外部函数

来源:互联网 发布:淘宝如何删除评论 编辑:程序博客网 时间:2024/06/01 12:25

存储类型:

1、用auto声明自动变量

     例:  int f(int a)

                     {

                          auto int b,c=3;

                          ……

                     }

      函数调用时自动分配内存空间,函数调用结束时自动释放这些空间。auto可以省略,定义变量时若没有声明存储类型,即默认为自动变量。


2、用static声明静态局部变量

     有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量保留上一次函数调用结束时的值。这时就应该指定该局部变量为静态局部变量。


3、用register声明寄存器变量

     一般情况下,变量(包括静态存储方式和动态存储方式)的值是存放在内存中的。当程序用到哪一个变量的值时,由控制器发出指令将内存中该变量的值送到CPU中的运算器。经过运算器进行运算,如果需要存数,再从运算器将数据送到内存存放。

     如果有一些变量使用频繁(例如在一个函数内执行1000次循环,每次循环中都要引用某局部变量),则为存取变量的值要花不少时间。为提高执行效率,C++允许将局部变量的值放在CPU的寄存器中,需要用时直接从寄存器中取出参加运算,不必再到内存中去存取。由于对寄存器的存取速度远高于对内存的存取速度,因此这样做可以提高执行效率。这种变量叫做寄存器变量,用关键字register作声明。


4、用extern声明外部变量

      全局变量(外部变量)是在函数外部定义的变量,变量作用范围是从声明位置到程序结束,这时如果要在变量声明之前使用该变量,那么就要在使用时加上extern声明,也叫提前引用声明。

例:

#include<iostream>

using namespace std;

int max(int,int);

void main()

{extern int a,b;          //对全局变量a,b作提前引用声明

cout<<max(a,b)<<endl;

}

int a=15,b=-7;

int max(int x,int y)

{int z;

z=x>y?x:y;

retrun z;

}

      

如果一个程序包含两个源程序文件,在两个文件中都要用到同一个外部变量num,不能分别在两个文件中各自定义一个外部文件num,否则在进行程序的连接时会出错。正确的做法是:在任一个文件中定义外部变量num,而在另一文件中用extern对num作外部变量声明。

例:extern int num;


5、用static声明静态外部变量

      有时在程序设计中希望某些外部变量只限于被本文件引用,而不能被其他文件引用。这时可以在定义外部变量时加一个static声明。


内部函数和外部函数

如果一个函数只能被本文件中其他函数所调用,则它称为内部函数,要在函数名和函数类型的前面加static。

如果一个函数首部的最左端冠以关键字extern,则它称为外部函数,可供其他文件调用,extern可以省略。


0 0
原创粉丝点击