c语言的定义与声明是什么?

Python010

c语言的定义与声明是什么?,第1张

声明就是声明一下我用到的变量或者类型,变量或者类型的实际定义并不一定在本文件内。

给变量分配了空间才叫做定义,否则就是声明

比如extern int a是声明,a的定义是在别处,这里并没有为a分配空间。

比如int a即是定义

函数以及类型,声明就是用函数或者类型的头部来声明

比如 struct x声明 struct x{}定义

比如 int fun()声明 int fun(){}定义

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")

}