我理解术语声明和定义如下。
声明:这只是提示编译器在代码中存在指定“名称”和“类型”的变量。以便它可以在以后的时间点定义/分配
定义:这是通过分配合适的内存空间来创建类型实例的过程。
int var; //Declaration and Definition-Agreed!!!
extern int var; //Declaration only ?
static int var; //Declaration only ?
我的头脑拒绝同意第二个和第三个作为仅声明的声明。因为在我看到的许多参考资料中,“外部和静态变量在内存分配时自动初始化为零”。正如您在以下代码中看到的那样。
#include <stdio.h>
int main()
{
static int i;
printf("%d\n",i);
return 0;
}
输出为 0。所以这里看起来像静态 int i;是声明、定义和自动初始化语句。因此,请为此添加您的理由