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; }