📜  定义和声明之间的区别

📅  最后修改于: 2021-05-30 20:05:43             🧑  作者: Mango

声明变量是为了通知编译器以下信息:变量的名称,其所持有的值的类型以及其初始值(如果有的话)。即,声明提供了有关变量属性的详细信息。而变量的定义说明了变量的存储位置。即,在定义变量期间分配变量的内存。

在C语言中,变量的定义和声明是同时进行的。即声明和定义之间没有区别。例如,考虑以下声明

int a;

在这里,诸如变量名:a和数据类型:int之类的信息被发送到编译器,该信息将存储在称为符号表的数据结构中。伴随此,将分配大小为2个字节的内存(取决于编译器的类型)。

假设,如果我们只想声明变量而不是定义变量,即我们不想分配内存,则可以使用以下声明

extern int a;

在此示例中,仅发送有关变量的信息,并且不进行内存分配。以上信息告诉编译器,变量a现在已声明,而其内存将稍后在同一文件或不同文件中定义。

函数的声明为编译器提供了函数的名称,函数的数量和类型以及返回类型。例如,考虑以下代码,

int add(int, int);

在这里,名为add的函数声明了2个类型为int且返回类型为int的参数。在此阶段将不会分配内存。

该函数的定义用于为该函数分配内存。例如,考虑以下函数定义,

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

在此函数定义期间,将分配用于函数添加的内存。变量或函数可以声明多次,但是只能定义一次。

下表总结了以上几点,

Declaration Definition
A variable or a function can be declared any number of times A variable or a function can be defined only once
Memory will not be allocated during declaration Memory will be allocated
int f(int);

The above is a function declaration. This declaration is just for informing the compiler that a function named f with return type and argument as int will be used in the function.

int f(int a)
{
  return a;
} 

The system allocates memory by seeing the above function definition.

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”