c语言函数的定义和声明(C语言如何声明)

admin 278 0

本篇文章给大家谈谈c语言函数的定义和声明,以及C语言如何声明对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

一、C语言里的函数定义和函数说明有什么联系和区别

函数说明:“说明”的意思,即表明当前的程序文件中有这个函数。

函数定义:“定义”的意思,即为该函数下定义——这个函数具体有什么功能(函数体)。

scanf("%d%d",&num1,&num2);

printf("两个数的和为%d",sum(num1,num2));

由于C语言的编译,是对c/cpp文件的内容从上至下编译。一般子函数(用户定义的函数)放在主函数(main函数)后面的话,main函数前面就该有声明,不然编译系统将无法识别到子函数。

例如上面这个例子,如果将前面的函数声明注释掉,这个程序运行到main函数中的sum(num1, num2)时就会报错,因为没有在main函数前编译到sum(a, b)这个函数,所以运行中就会识别不了sum这个函数。(如下图所示)

3.当然,通常情况下,我们也可以直接将整个子函数的函数体(函数定义)放在main前面,这样就可以省略掉函数声明的部分。

scanf("%d%d",&num1,&num2);

printf("两个数的和为%d",sum(num1,num2));

}

以上这个程序同样是可以正确编译运行的。

以上这个程序同样是可以正确编译运行的。

二、在C语言中声明和定义有什么区别

1、变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。

2、变量声明:用于向程序表明变量的类型和名字。

3、定义也是声明,extern声明不是定义。定义分配存储空间,而声明不会。通过使用extern关键字声明变量名而不定义它。事实上它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。

4、只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。

5、例如:extern int a其中变量a是在别的文件中定义的。前者是"定义性声明(defining declaration)"或者称为"定义(definition)",而后者是"引用性声明(referncing declaration)"。

6、变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。

7、例如,可以创建一个名为Click Count的变量来存储用户单击Web页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。在VB Script中只有一个基本数据类型,即Variant,因此所有变量的数据类型都是Variant。

8、在VB6中,变量的命名必须遵循以下规则:

9、(1)变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线“_”组成;最后一个字符可以是类型说明符;

10、(2)变量名的长度不得超过255个字符;

11、(3)变量名在有效的范围内必须是唯一的。有效的范围就是引用变量可以被程序识别、使用的作用范围——例如一个过程、一个窗体等等;

12、(4)变量名不能是VB中的保留字(关键字),也不能是末尾带类型说明符的保留字,但可以把保留字嵌入变量名,关键字是指VB6语言中的属性、事件、方法、过程、函数等系统内部的标符。

三、C语言中函数的定义格式是什么,函数原型声明的语法格式

1、函数定义就是规定函数的格式与功能。

2、函数声明就是在函数调用之前进行的一种说明。

3、intfun(inta,intb);//函数的声明

4、}

注:如果被调函数(上例中为fun函数)写在调用处之前,可以不声明(本例是现在调用处(c= fun(x+y);)之后)。

5、注:如果被调函数(上例中为fun函数)写在调用处之前,可以不声明(本例是现在调用处(c= fun(x+y);)之后)。

四、c语言函数声明

1、假设主函数main()。其他函数void fun(int a,int*b)。

2、在代码中fun函数,有完整函数体的代码就是函数定义部分,比如void fun(int a,int*b){。。。};。

3、如果没有具体实现的函数体代码(也就是大括号内容),那么就是函数声明。比如void fun(int,int*);

4、如果fun函数定义在main代码上面。比如:

5、void fun(int a,int*b){。。。};

6、fun(a,&b);//这里fun定义代码在main上面,所以可以不需要声明。反之需要先写声明语句

7、定义在函数之外的就是全局变量,这个变量所有函数都可以直接使用,并且共用同一个地址。任意函数修改了变量值,其他函数调用也会变。

8、定义在函数之内的就是局部变量,局部变量只属于该函数,其他函数即使定义了同样名字的变量,这两个变量也不同地址,互不相干。

9、int a;//这就是全局变量,作用域下所有函数共用

10、int b;//这就是局部变量,只在本函数有效,如果想在调用fun函数时让fun也使用该变量,需要把这个变量的地址作为参数传递过去。

11、注意:c语言中允许局部变量和全局变量同名,但是同名的局部变量会屏蔽全局变量,实际代码避免同名。

12、如函数void fun(int a,int*b){..........};这里形参a和*b,分别表示一个值和一个地址

13、fun(c,&d);//这里调用就对应上面形参类型,第一个参数传递了c的值(传值),第二个参数传递了d的地址(传址),这里c和&d,叫做实参。当fun函数运行时改变了a和b指向地址的值,对应main函数中c的值不变,d的值改变。

14、顺带一说:局部变量,在函数运行结束后会自动释放,所以想把局部变量地址作为返回值,需要用malloc函数申请。(这里看不懂可以暂时忽视)

五、c语言函数的调用和声明

1、假设主函数main()。其他函数void fun(int a,int*b)。

2、在代码中fun函数,有完整函数体的代码就是函数定义部分,比如void fun(int a,int*b){。。。};。

3、如果没有具体实现的函数体代码(也就是大括号内容),那么就是函数声明。比如void fun(int,int*);

4、如果fun函数定义在main代码上面。比如:

5、void fun(int a,int*b){。。。};

6、fun(a,&b);//这里fun定义代码在main上面,所以可以不需要声明。反之需要先写声明语句

7、定义在函数之外的就是全局变量,这个变量所有函数都可以直接使用,并且共用同一个地址。任意函数修改了变量值,其他函数调用也会变。

8、定义在函数之内的就是局部变量,局部变量只属于该函数,其他函数即使定义了同样名字的变量,这两个变量也不同地址,互不相干。

9、int a;//这就是全局变量,作用域下所有函数共用

10、int b;//这就是局部变量,只在本函数有效,如果想在调用fun函数时让fun也使用该变量,需要把这个变量的地址作为参数传递过去。

11、注意:c语言中允许局部变量和全局变量同名,但是同名的局部变量会屏蔽全局变量,实际代码避免同名。

12、如函数void fun(int a,int*b){..........};这里形参a和*b,分别表示一个值和一个地址

13、fun(c,&d);//这里调用就对应上面形参类型,第一个参数传递了c的值(传值),第二个参数传递了d的地址(传址),这里c和&d,叫做实参。当fun函数运行时改变了a和b指向地址的值,对应main函数中c的值不变,d的值改变。

14、顺带一说:局部变量,在函数运行结束后会自动释放,所以想把局部变量地址作为返回值,需要用malloc函数申请。(这里看不懂可以暂时忽视)

六、C语言中函数什么时候声明什么时候定义最好举例说明。

1、函数可以在调用函数的函数(比如main函数)之前定义,这样就无需声明了;

2、intadd(intx,inty){returnx+y;}//在编译程序编译到main的调用add之处时,由于已经编译过add的函数了,因此编译程序已经知晓调用规则,因此可以省略声明语句

3、voidmain(){intx=5,y=6,c;c=add(x,y);printf("%d\n",c);}

如果函数在调用函数的函数之后定义,为了通知编译程序要调用函数的格式,需要在调用函数的函数前添加函数的声明。

4、如果函数在调用函数的函数之后定义,为了通知编译程序要调用函数的格式,需要在调用函数的函数前添加函数的声明。

5、intadd(intx,inty);//函数声明也可以简单地写成intadd(int,int);通知编译程序main中调用add的规则即可

6、voidmain(){intx=5,y=6,c;c=add(x,y);printf("%d\n",c);}

7、intadd(intx,inty){returnx+y;}

关于c语言函数的定义和声明,C语言如何声明的介绍到此结束,希望对大家有所帮助。