文档详情

etern和const关键字的作用.docx

发布:2024-06-22约1.93千字共2页下载文档
文本预览下载声明

extern和const关键字的作用

、extern的作用:

这样做的好处是在其他文件里面可以使用,但此时必须申明它。如:在a文件中声明了externinti;在b

这样做的好处是在其他文件里面可以使用,但此时必须申明它。如:在a文件中声明了

externinti;在b文件中可以直接使用这个变量,此时可以声明externinti告诉编译器这个

使用该变量。要在多个文件使用同一个变量的话就可以使用extern来声明。这里还要注意变量在其他文件中已经声明了。我们平时往往把声明和定义混淆了。往往都是在声明的时候就定义了,这只能在一个文件里面使用,此时的声明就是定于,不能在多个文件里使用同时

使用该变量。要在多个文件使用同一个变量的话就可以使用extern来声明。这里还要注意

extern

extern和static的区别:extern是文件级的,也就是说多个文件(只要是声明了externinti

的)都可以使用同一个变量。而static只是在文件内部使用,它声明的变量的使用范围相当于是filescope,即在该cpp文件里都可使用,在应用程序消亡的时候消亡。这里不得不

全局变量,整个应用程序下的所有文件

全局变量,整个应用程序下的所有文件;extern,必须是在都声明的情况下使用同一个变

提一下全局变量与前面两者的关系。这三个限制作用域的关键字的区别总的来说是这样的:量;static,在单个文件范围内使用。

提一下全局变量与前面两者的关系。这三个限制作用域的关键字的区别总的来说是这样的:

函数时就要使用extern关键字。因为在编译后c和C++编译器多函数的处理方式是不一样的,C++为了重载机制的运行把函数名f()的形式改成了_f_int_int。前一个int

函数时就要使用extern关键字。因为在编译后c和C++编译器多函数的处理方式是不一样

的,C++为了重载机制的运行把函数名f()的形式改成了_f_int_int。前一个int是指的参数的

函数中调用c函数的时候应该用extern声明c里的函数,再用

函数中调用c函数的时候应该用extern声明c里的函数,再用extern“声c”明c++里的函数;

在c里调用c++的函数的时候在c++里声明externC,在c里声明extern。

a、const用于指针的两种情况分析: intconst

a、const用于指针的两种情况分析: intconst*a;

file://a可变,*a不可变,int*const

a;

file://a不可变,*a可变。const是一个左结合的类型修饰符,它与其左侧的类型修饰

不可被改变。由值传递的特点可知,var在函数体中的改变。不会影响到函数外部。所以,符和为一个类型修饰符,所以,intconst限定*a,不限定a。int*const限定a,不限定*a。const限定函数的传递值参数:voidfun(constintvar);分析:上述写法限定参数在函数体中

不可被改变。由值传递的特点可知,var在函数体中的改变。不会影响到函数外部。所以,

此限定与函数的使用者无关,仅与函数的编写者有关。结论:最好在函数的内部进行限定,

此限定与函数的使用者无关,仅与函数的编写者有关。结论:最好在函数的内部进行限定,

对外部调用者屏蔽,以免引起困惑。const限定函数的值型返回值:

constintfun1();

constintfun1();

constmyclassfun2();

分析:上述写法限定函数的返回值不可被更新,当函数返回内部的类型时(如fun1),已经是一个

数值,当然不可被赋值更新,所以,此时

数值,当然不可被赋值更新,所以,此时const无意义,最好去掉,以免困惑。当函数返回

自定义的

类型时(

类型时(如fun2),这个类型仍然包含可以被赋值的变量成员,所以,此时有意义。

b.传递与返回地址:此种情况最为常见,由地址变量的特点可知,适当使用const,意义昭然。

c. const

c. const限定类的成员函数:

classclassname{

public:

public:

intfun()const;

.....

.....

}

注意:采用此种

注意:采用此种const后置的形式是一种规定,亦为了不引起混淆。在此函数的声明

中和定义中

均要使用

均要使用const,因为const已经成为类型信息的一部分。

获得能力:可以操作常量对象。

显示全部
相似文档