本文包括:变量声明和定义、函数的声明和定义、extern关键字介绍。
变量在使用前就要被定义或者声明。
在C++中,变量的声明(Declaration)语法格式如下:
extern数据类型 变量名;
其中,数据类型表示变量的类型,例如整型、浮点型、字符型等;而变量名则是用来标识变量的名称。
变量的定义(Definition)既包含了声明的功能,也包括了对变量所需内存空间的分配。通过定义变量,我们不仅告诉编译器变量的存在和类型,还为变量分配了内存以用于存储数据。
在C++中,变量的定义语法格式如下:
数据类型 变量名 [= 初值];
其中,数据类型表示变量的类型,例如整型、浮点型、字符型等;变量名则是用来标识变量的名称。通过赋值操作符=可以给变量赋初值。
C++声明和定义的区别
定义分配存储空间,而声明不会。
①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。
②变量声明:用于向程序表明变量的类型和名字。
③定义也是声明:当定义变量时我们声明了它的类型和名字。
④extern关键字:通过使用extern关键字是声明变量名而不定义它。extern告诉编译器变量在其他地方定义了。
下面示例说明:
int i; //定义,定义也是声明
int i=5; //定义,定义也是声明
extern int i; //声明
需要注意的是,如果声明有初始化值,就被当作定义,即使前面加了extern。例如:
extern double pi=3.1416; //定义,定义也是声明
顺便提示,对于同一个变量,只能有一个定义,但是可以在多个文件中进行声明。如果有多个定义,那么就会导致重定义错误。
在多文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。
除了单个变量的定义外,还可以同时定义多个同类型的变量,通过逗号分隔它们的名称,并可选择性地进行初始化。例如:
int c = 0, d, e = 1; // 定义三个整型变量c、d和e,其中c和e被初始化为0和1,d未被初始化
函数的声明是通知编译器函数名称、参数数量和类型以及函数返回类型,但是不提供函数的实现。例如:
int Max(int x, int y);
在上面的代码中,函数名为 Max,返回类型为 int 、参数为 int x,int y
函数定义
函数的定义包括函数体以及函数的参数类型、返回类型和函数名。在函数定义中,程序员定义要执行的代码,以便在程序中调用该函数。是为函数分配内存,例如:
int Max(int x, int y) {
return x > y ? x : y;
}
函数声明和定义区分
函数只要有实现(存在函数体 { } )即为定义,否则为声明。可以这样理解:函数声明是说明函数是什么,函数定义是说明函数做什么。
顺便提示,如果函数需要在多个文件中使用,则应该在一个文件中定义该函数,并在另外的文件中声明它,这样编译器才能正确的链接函数的定义和声明。
在C++中使用extern关键字来声明常量和函数的示例:
声明头文件 abc.h,内容如下:
extern const int MAX_VALUE; // 声明常量MAX_VALUE
extern void showMessage(); // 声明函数showMessage
实现文件 abc.cpp,内容如下:
#include "abc.h"
const int MAX_VALUE = 100; // 定义并初始化常量MAX_VALUE
#include
void showMessage() { // 定义函数showMessage
std::cout << "Hello, World!" << std::endl;
}
在测试文件中demo.app使用"abc.h"文件中常量和函数,内容如下:
#include "abc.h"
#include
int main() {
std::cout << "Max value: " << MAX_VALUE << std::endl; // 使用常量MAX_VALUE
showMessage(); // 调用函数showMessage
return 0;
}
在这个示例中,我们在abc.h文件中使用extern关键字声明了一个常量MAX_VALUE和函数showMessage,然后在abc.cpp文件中定义常量MAX_VALUE和函数showMessage。在测试文件中demo.app使用了这些中常量和函数。
要使用Dev-C++编译和运行带有自定义头文件的C++源代码的步骤如下:
打开Dev-C++,创建一个新项目。
项目类型选Basic页中的Console Application,并为项目起一个名称
在项目中,选择“文件”->“新建”->“源文件”,
添加abc.h、abc.cpp、demo.cpp文件
参考
C++定义与声明 区别https://blog.csdn.net/sjxbf/article/details/6310150
C++将函数声明放在头文件中的示例https://blog.csdn.net/cnds123/article/details/132214317