变量的声明变量的定义变量的初始化
Posted Haley_Wong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量的声明变量的定义变量的初始化相关的知识,希望对你有一定的参考价值。
变量的声明:用于向程序表明变量的类型和名字。
变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。
变量的初始化:为变量指定初始值。
广义上来说,变量的声明有两种情况:
- 1.需要建立存储空间的声明。例如:
int a
,我们在声明的时候就建立的存储空间。 - 2.不需要建立存储空间的声明。例如:
extern int a
,变量a 是在别的文件中定义的。
这里,第一种情况是定义性声明
(defining declaration),因为这种情况的声明为变量创建了存储空间,所以是包含定义的。而第二种情况则是引用性声明
(referncing declaration),这种情况的声明告诉了程序变量的类型和名字,以及告诉程序该变量的定义是在其他文件中。
从广义的角度来讲声明是包含定义,即定义是声明的一个特例,但是并非所有的声明都包含定义。例如:int a
它既是声明,同时又是定义。而 extern a
它只是声明不是定义。
一般的情况下,我们把建立空间的声明称之为定义,而把不需要建立存储空间的声明称之为声明。
变量的初始化,就很简单了,为变量声明或者定义之后,赋上初始值的过程,就是变量的初始化。
像int a
只是对变量的定义,因为它并没有为a赋上初始值,所以它是不包含变量的初始化的。
而int a = 100
,这句语法就包含了变量的初始化,所以它既是变量的定义,也是变量的初始化。
当然,我们也可以分开写:
int b; // 这是变量的定义
b = 20; // 这是为变量做初始化
例如:
int main()
extern int A;
//这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
dosth(); //执行函数
int A; //是定义,定义了A为整型的外部变量
外部变量的定义
与外部变量的声明
是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。
系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。对于外部变量来讲,初始化只能是在定义
中进行,而不能在声明
中。所谓的声明
,其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是为了提前
引用该变量而作的声明
而已。因此extern 只作声明,不作任何定义。
我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。
用static来声明一个变量的作用有二:
- (1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。
- (2)外部变量用static来声明,则该变量的作用只限于本文件模块。
文中大部分内容转自:http://www.cnblogs.com/GavinDai/archive/2011/10/24/2222735.html
以上是关于变量的声明变量的定义变量的初始化的主要内容,如果未能解决你的问题,请参考以下文章
C 语言结构体 ( 结构体类型变量初始化 | 定义变量时进行初始化 | 定义隐式结构体时声明变量并初始化 | 定义普通结构体时声明变量并初始化 )