在C语言中,内部函式和外部函式的区别?

 我来答
大沈他次苹0B
2022-10-03 · TA获得超过7271个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:171万
展开全部

在C语言中,内部函式和外部函式的区别?

内部函式跟外部函式的区别在于:一个档案中定义的函式能否被其它档案呼叫。能被呼叫的函式在前面加extern(一般省略),而不能被呼叫的加static(不能省略),通常函式本质上是全域性的,也就是外部的可呼叫的。
我们通常呼叫的#include本质上就是一些外部函式的集合,由于在一个档案中的函式要呼叫另外一个档案的函式,要求在开始宣告一下,为了省略这些宣告,我们引用include命令。

C语言中,若为指定函式是内部函式或外部函式,则预设该函式是什么

C语言规定,定义函式时省略了extern则隐含为外部函式,可被其他档案呼叫

C语言:内部函式和外部函式所说的不同档案是什么?谢谢

不同的.c档案(原始档)

javascript巢状函式和在函式内呼叫外部函式的区别

我们都知道在函式中定义的区域性变数在宣告他的函式体以及其巢状的函式内始终是有定义的,并且在函式的作用域链上始终会有个物件指向全域性物件,使函式能够访问到全域性变数。
var ga = 'global';
var func = function() {
var la = 'local';
return function() {
return function()
{
return function()
{
alert(la);alert(ga);
}
}
}
}
a = func();
a()()(); 弹出 local 和 global
那么在外部定义的函式A, 被函式B在函式体内呼叫时,A能访问到B中定义的区域性变数吗?答案是否定的,把上面的例子稍作修改如下
var ga = 'global';
function repeat() {
alert(la);
}
var func = function() {
var la = 'local';
alert(1);
repeat();
alert(2);
};
func();
上面的执行结果是只弹出了1,在呼叫repeat的时候,因为访问了未定义变数js直译器就报错把程式中断了。
原因是函式在定义时储存了一个作用域链,repeat函式在外部定义,在他的作用域中并没有一个区域性变数叫la,继续在全域性作用域查询也没找到la所以就会报错。
所以巢状函式和在函式内巢状呼叫外部函式还是有很大区别的。

在C语言中,外部函式与档案包含的区别

外部函式extern时宣告这个函式为外部函式,本档案不做定义,只调用,编译不会出错,但不能执行(没有函式实体)。。。。如果想有执行结果就必须将函式实体包含进来,所以档案包含和extern是配合使用的。。。档案包含只需要包含.h就是实体的标头档案,但有些软体貌似不能识别标头档案和c的关系,所以就只能包含.c档案。。。
也就是说外部函式extern只是个宣告,他告诉编译器我用到了一个外部函式,但如果该档案没有将函式实体包含进来,编译器是找不到的,依然是不能执行的,所以extern只是个宣告,并没有做任何事,只是这样是没用的。。。。
include是包含一个档案,就是类似于该档案复制到此处(只是说类似,其实是个查询路径,让编译器去该路径查询函式),就这么简单功能。。。。

C语言中外部函式怎么呼叫?

你是指自定义函式吗?
主函式前面要有函式定义、宣告和函式体,然后在main函式中直接用。

javascript巢状函式和在函式内呼叫外部函式的区别分析

可以的。
所有函式在执行的时候,都会生成一个变数物件:
变数物件相当于一个栈,栈的第一个元素是函式当前的作用域的变数,下一个元素就是包含该函式的作用域(如果存在)。最后,到全域性环境的时候,会在栈的结尾加上几个全域性物件:window、Math、 Date 等 javascript原生物件。
当在函式呼叫变数时,将会在变数物件中回圈搜寻是否存在该变数,逐次搜寻直到最后的全域性物件。当搜寻的层次越深,访问变数的效率越低。

C语言中scanf函式与get函式的区别

scanf函式是标准的输入
get函式我就不清楚了,我不知道你是不是想问getchar,gets这一类的,这是字元读取和字串读取函式,区别吗,使用的格式不一样,
scanf("格式描述符",变数地址);
get类的是用到地址就可以了,不用格式描述符,还有就是它们的标头档案不是一个,一个是stdio.h一个是stdlib.h

在c语言中,getchar()和getch()函式的区别?

getchar有一个int型的返回值.当程式呼叫getchar时.程式就等著使用者按键.使用者输入的字元被存放在键盘缓冲区中.直到使用者按回车为止(回车字元也放在缓冲区中).getchar函式的返回值是使用者输入的第一个字元的ASCII码,如出错返回-1,且将使用者输入的字元回显到萤幕.如使用者在按回车之前输入了不止一个字元,其他字元会保留在键盘快取区中,等待后续getchar呼叫读取.也就是说,后续的getchar呼叫不会等待使用者按键,而直接读取缓冲区中的字元,直到缓冲区中的字元读完为后,才等待使用者按键.
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待使用者按回车,只要使用者按一个键,getch就立刻返回,getch返回值是使用者输入的ASCII码,出错返回-1.输入的字元不会回显在萤幕上.getch函式常用于程式除错中,在除错时,在关键位置显示有关的结果以待检视,然后用getch函式暂停程式执行,当按任意键后程序继续执行.
简单的说,getch()是读取按键值常放在程式末尾起暂停作用而getchar()是从标准输入装置读取下一个字元~~所读字元若档案结束或出错则返回-1

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式