
声明一个变量只是将变量名标识符的有关信息告诉编译器,使编译器“认识”该标识符,但声明不一定引起内存的分配。而定义变量意味着给变量分配内存空间,用于存放对应类型的数据,变量名就是对相应的内存单元的命名。
1、声明是当一个计算机程序需要调用内存空间时,对内存发出的“占位”指令,称为“声明”。
2、定义是计算机使用判断或命题的语言逻辑形式,确定一个认识对象或事物在有关事物的综合分类系统中的位置和界限,使这个认识对象或事物从有关事物的综合分类系统中彰显出来的认识行为。
C语言里可能经常会说:
声明变量时不会分配内存,定义变量时才会分配内存。
局部变量的声明即是定义:
void fun(){
int a = 1; //既是声明,也是定义,初始值为1
int b; //既是声明,也是定义,初始值伪随机。
}
全局变量只能定义一次,可以声明多次,在全局变量不可见的地方但又想使用就得进行声明。
同一个文件中,比如main.c:
extern int a; //声明,不再分配内存,extern关键字表示此变量已在其它地方定义。
void fun(){
printf("%d\n",a); //此处用到了全局变量a,而a是在后面定义,所以需要在前面再声明一次。
}
int a = 1; //全局变量a定义,为它分配内存
int main()
{
fun();
return 0;
}
不同文件中:
fun.h:
void fun(); //函数声明
fun.c:
extern int a; //声明,不再分配内存,extern关键字表示此变量已在其它地方定义。
//函数定义
void fun(){
printf("%d\n",a); //此处用到了全局变量a,而a是在另外一个源文件中定义,所以需要在前面再声明一次。
}
main.c:
#include "fun.h"
int a = 1; //全局变量a定义,为它分配内存
int main()
{
fun();
return 0;
}
前面主要是针对变量的声明和定义的说明,当然也提到了函数的声明与定义。
函数和变量一样,使用前一定要先声明或者定义,定义本身也是一次声明。
//此处定义函数,有函数体,当然也是一次声明。
void fun(){
printf("hello world\n");
}
int main()
{
fun(); //fun函数在前面已经定义,所以可直接调用
return 0;
}
另一例子:
void fun();//此处须声明一次(没有函数体),main函数才能调用它。
int main()
{
fun(); //fun函数在后面定义。
return 0;
}
//此处定义函数,有函数体,当然也是一次声明。
void fun(){
printf("hello world\n");
}
声明和定义的区别是
声明不为变量分配空间,而定义为变量分配空间
因此同一个变量的声明可以出现多次,而只能定义一次。
声明跟定义的最大区别就是声明后面有分号,而定义没有,再者就是声明函数中的形参可以只写类型,写参数名,但是定义一定要全写
C语言变量的定义和声明的不同之处:
1、变量在使用前就要被定义或者声明;
2、在一个程序中,变量只能定义一次,却可以声明多次;
3、定义分配存储空间,而声明不会。

扩展资料:
变量的定义:用于为变量分配存储空间,还可以为变量指定初始值。在程序中,变量有且仅有一个定义。
声明:用于向程序表明变量的类型和名字。
定义也是声明:当定义变量的时候我们声明了它的类型和名字。可以通过使用extern声明变量名而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern。
extern声明不是定义,也不分配存储空间。事实上它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。
只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。初始化式必须要有存储空间来进行初始化。如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern。
任何在多文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。
以上就是关于c语言中a和a的区别,在C语言中声明和定义的区别的全部内容,以及在C语言中声明和定义的区别的相关内容,希望能够帮到您。