两个区别就是看有没有在内存中分配空间;
如: 你创建了一个Person类
Person ZhanSan;//此时是声明,还没有在堆中分配空间,这句话告诉编译器,这个名字已经被占用了,不能再给别人了!虽然这个人还没出生。就像先给孩子想好名字,而小孩还没出生
ZhanSan = new Person();//定义,此时已经在堆中划分了空间 ,
Person LiSi = new Person();//声明并定义, 小孩子出生了并起了个名字来标识他 作者: 李先洋 时间: 2012-12-15 23:03
一般解释来说:声明是告诉编译器存在这么一个标识符。定义则是为程序申请一块内存。
例如:
int x; //这是一个定义
extern int x; //这是声明
int x = 10; //这也是一个定义 作者: 黑马_黄开潮 时间: 2012-12-16 00:13
变量的声明有两种情况:
1、一种是需要建立存储空间的。例如:int x在声明的时候就已经建立了存储空间。
2、另一种是不需要建立存储空间的。比如上面的同学说的extern int x;
前者是“定义性声明”或者称为“定义”,而后者是“引用性声明”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义。