1、定义(Definition)
定义是对变量、函数或对象的实际实现。在定义中,变量会被分配内存,或者函数的代码体会被提供。
1)变量定义
当定义一个变量时,编译器会为这个变量分配内存,并可以选择初始化它。
int x = 10; // 定义变量 x,并初始化为 10
2)函数定义
函数定义是提供了函数的具体实现,包括函数体。
int add(int a, int b) { // 定义函数 add
return a + b;
}
2、声明(Declaration)
声明告诉编译器某个变量或函数的类型和名字,但不为它分配内存(除非它同时也是定义)。
1)变量声明
声明一个变量只是告诉编译器该变量的存在和类型,但不分配内存。
extern int x; // 声明 x 变量,但不分配内存
2)函数声明
函数声明(通常称为函数原型)只声明函数的名称、参数和返回类型,而不包含函数的实现。
int add(int a, int b); // 声明函数 add,但不提供函数体
3、声明和定义的总结
声明(Declaration)是告诉编译器变量、函数的类型和名字,但不分配内存。定义(Definition)提供变量的内存分配或函数的实现。声明没有函数体(仅函数原型),定义包含函数体。
1)定义示例
extern int x; (变量声明)
int add(int, int); (函数声明)
2)声明示例
int x = 10; (变量定义)
int add(int a, int b)
{
return a + b;
}
4、变量声明与定义
变量声明是指告诉编译器某个变量的存在,但不分配内存空间。声明通常用于在多个源文件中共享变量。
1)变量声明和定义在同一个文件中
#include <stdio.h>
int x = 10; // 这是定义,分配了内存并初始化
int main() {
printf("%d\n", x);
return 0;
}
2)变量声明和定义在不同文件中
两个文件 file1.c
和 file2.c
。
file1.c文件中定义:
#include <stdio.h>
int x = 10; // 这是定义
int main() {
printf("%d\n", x);
return 0;
}
file2.c文件中声明:
extern int x; // 这是声明,表示变量 x 在其他文件中定义
void printX() {
printf("%d\n", x);
}
5、函数声明与定义
函数声明(Function Declaration)也称为函数原型(Function Prototype),它告诉编译器函数的名称、返回类型以及参数类型。函数声明通常放在头文件中,或者在源文件的顶部。函数声明的目的是为了让编译器知道函数的接口,以便在函数被调用时进行类型检查。
1)函数声明和定义在同一个文件中
#include <stdio.h>
int add(int a, int b); // 声明
int main() {
printf("%d\n", add(3, 4)); // 输出 7
return 0;
}
int add(int a, int b) { // 定义
return a + b;
}
2)函数声明和定义在不同文件中
file1.c文件中定义:
#include <stdio.h>
int add(int a, int b) { // 函数定义
return a + b;
}
file2.c文件中声明:
#include <stdio.h>
int add(int a, int b); // 函数声明
int main() {
printf("%d\n", add(3, 4)); // 输出 7
return 0;
}