下面是一个代码段,
int var1;
extern int var2;
Run Code Online (Sandbox Code Playgroud)
这是一个多重选择。答案是,第一条语句声明并定义了var1,而第二条语句仅声明了var2。但是我认为应该是“两个语句都只声明变量,没有定义变量”。哪一个是正确的?
这可能会有所帮助。资源
声明变量是为了通知编译器以下信息:变量的名称,其持有的值的类型以及初始值(如果有)。即,声明提供有关变量属性的详细信息。而变量的定义表示变量的存储位置。即,在定义变量期间分配变量的内存。
在C语言中,变量的定义和声明是同时进行的。即声明和定义之间没有区别。例如,考虑以下声明
Run Code Online (Sandbox Code Playgroud)int a;在这里,诸如变量名:a和数据类型:int之类的信息被发送到编译器,并将存储在称为符号表的数据结构中。伴随此,将分配大小为2个字节的内存(取决于编译器的类型)。
假设,如果我们只想声明变量而不是定义变量,即我们不想分配内存,则可以使用以下声明
Run Code Online (Sandbox Code Playgroud)extern int a;在此示例中,仅发送有关变量的信息,并且不进行内存分配。以上信息告诉编译器,现在声明了变量a,而稍后将在同一文件或不同文件中定义该变量的内存。