1、声明(Declaration)
声明是告诉编译器某个变量或函数的存在和类型,但不分配内存或给出具体实现。声明通常发生在头文件中,它告诉编译器在其他地方会有对应的定义。声明并不创建实际的对象或函数,它只是对对象或函数的描述。
1)变量声明
#include <iostream>
extern int x; // 声明,表示x是一个int类型的变量,定义在其他地方
int main() {
std::cout << "x的值是: " << x << std::endl; // 使用声明的变量x
return 0;
}
// 在其他地方的定义:
int x = 10; // 定义变量x并初始化
2)函数声明
#include <iostream>
int add(int a, int b); // 声明,表示有一个函数add,接受两个int参数,返回int类型
int main() {
int result = add(3, 5); // 使用声明的函数
std::cout << "3 + 5 = " << result << std::endl;
return 0;
}
// 在其他地方的定义:
int add(int a, int b) { // 定义并实现函数add
return a + b;
}
2、定义(Definition)
定义则是实际创建变量、对象或实现函数体的地方。定义不仅告诉编译器某个变量或函数的类型,还分配内存或者实现其功能。每个变量或函数在程序中只能有一个定义。
1)变量定义
#include <iostream>
int x; // 定义,声明并分配内存
int main() {
x = 10; // 给变量赋值
std::cout << "x 的值是: " << x << std::endl; // 输出 x 的值
return 0;
}
2)函数定义
#include <iostream>
int add(int a, int b) { // 定义,给出函数的实现
return a + b; // 返回 a 和 b 的和
}
int main() {
int result = add(5, 3); // 调用 add 函数
std::cout << "5 + 3 = " << result << std::endl; // 输出结果
return 0;
}
3、声明与定义的区别
声明只是告诉编译器变量或函数的存在和类型,而定义才是实际分配内存并给出具体实现。一个变量或函数只能有一个定义,但可以有多个声明。声明通常放在头文件中,定义一般放在源文件中。
// 声明
extern int x; // 声明变量
extern void print(); // 声明函数
// 定义
int x = 10; // 定义并初始化变量
void print() { // 定义函数并实现
std::cout << "Hello, World!" << std::endl;
}