读书人

C++中变量、函数的宣言和定义以及调用

发布时间: 2013-10-11 14:52:39 作者: rapoo

C++中变量、函数的声明和定义以及调用C函数( 多文件变量;extern修饰变量;const修饰变量)

1 变量的定义:

变量的定义为变量分配空间;变量在使用前必须有且只有一个定义的地方;在源文件中定义变量。

类型名 变量名;
类型名 变量名1,变量名2;

例如下面语句定义了5个变量:

int i1;

double d2,d3;std::string title;Sales_item curr_book;

1.1 变量的初始化

初始化是变量定义的一种。变量的初始化包括两种:显示初始化和隐式初始化。

显示初始化一个变量有两种方法:

int ival(1024);//直接初始化调用含参数的构造函数

int ival=1024;//复制初始化,调用复制构造函数

隐式初始化取决于变量定义的位置和变量的类型,内置类型变量的初始化取决于变量定义的位置,在函数体外定义的变量初始化为0,在函数体内部没有自动初始化。类类型的对象初始化有类的构造函数决定,没有定义则编译器自动生成一个默认构造函数用于自动初始化。


2 变量的声明:

只声明而不定义变量需要使用extern关键字。变量的声明可以多次。

在一个文件中定义的变量,在其他文件中使用时需要在其他文件中加以声明。

当变量的声明放在头文件中时,包含了头文件也就包含了变量的声明。


2.1变量的声明与const

const变量在定义时,默认是局部于定义它的文件的局部变量,不能被其他文件访问,必须在定义时使用extern定义const变量表明可以被其他文件访问,另外在其他文件中使用时用extern声明来使用(或者包含一个头文件,头文件中包含了const变量的声明)。

非const变量默认就是extern的,可以被其他文件访问。所以在定义时不需要加extern。只是其他文件在使用时需要声明。


3 函数的声明:

函数的声明不像变量的声明那样要有extern,函数的声明如下:

返回类型 函数名(形参列表);

函数的声明和定义使用方法同变量的声明和定义。

4 C语言函数在C++语言中的声明

由于C++语言支持函数重载,编译器对一个函数编译后其实另外命了名。这个在C语言中不同,C语言中函数在编译后名字还是原来的名字。所以当C++语言调用C语言的文件中定义的函数(在VS中以.c后缀文件中定义的函数)时也要声明,只不过这是的声明和C++语言对函数的声明不同,而是嗦了一点:

extern "C" 返回类型 函数名(形参列表);

例如:

1 在头文件a.h中声明一个int变量:

extern int ix;


2 在源文件a.cpp中定义变量

#include“a.h”

int ix=1;


3 在main中声明多文件变量

#include"a.h"

extern int ix;

//这里你如果直接使用ix不声明也是可以的,因为它已经在源文件中被定义,在main的源文件中包含了头文件。声明只是说明已经有了这个变量,只不过它在其他文件中,你可以使用它的名字。


1在func.c中定义了一个C函数

int add(int a,int b)
{
return a+b;
}

2 在main所在文件中加入声明

extern "C" int add(int a,int b);

即可正常使用add


读书人网 >C++

热点推荐