当前位置:首页 » 编程语言 » c语言外部变量函数的使用
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言外部变量函数的使用

发布时间: 2022-09-20 20:13:36

‘壹’ c语言函数外部变量问题

int i;//声明全局变量 i
void prt();//声明无返回值函数 prt()
main() //主函数入口
{
for(i=0;i<5;i++) //
prt(); //循环 执行 5次prt()函数
}
void prt() //prt()函数主体
{ for(i=0;i<5;i++)
printf(“%c”,’*’); //循环 执行 5次输出"*"
printf(“\n”); //输出换行符
}

‘贰’ 关于c语言外部变量的问题

int a = 0; //如果是全局变量,未初始化则自动初始化为0
int fun()
{
a=5;
}
int main()
{
fun();
}
你自己试一下不就知道了?全局变量的作用域是整个程序的生命周期。
比如C.c中
int a = 10;
main.c中
extern int a;
int fun()
{
a = 5;
}
main()
{
fun();
}
你自己试试吧。有不明确的就写代码自己确认。

‘叁’ C语言 外部变量函数的调用

main()中的extem
a;改为extem
int
a;
extem用于将用于将其他源文件的函数或变量的作用范围扩大到整个程序。在定义是不需要,只有在应用前用申明语句申明即可,如extern
void
print(int
n);
你也没说哪不懂,只能回答这么多了,希望对你有帮助

‘肆’ c语言中外部变量如何使用,看看这题,,为啥输入extern为啥无法输出,大神们围观一下

假设有两个文件a.c和b.c。
在a.c中定义了int x;
在b.c中声明extern int x;
其实在编译阶段a.c生成了a.obj。b.c生成了b.obj。
a.obj中定义了x这个变量。b中没有定义该变量,那么b中怎么用该变量呢?
答案是在link阶段将a.obj和b.obj链接起来。在这个链接过程中,b会去外部找b中声明的所有外部变量,在链接的所有对象中,发现a.obj中存在此对象,则将其记录下来,后面b运行时需要x变量时就访问了a中的变量了。

所以用extern声明的变量只要定义到另外一个文件中即可。然后把这两个文件链接起来就行了。

‘伍’ c语言,变量的定义和使用

变量的声明有两种情况:
1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。
前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing declaration)”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义,例如:int a 它既是声明,同时又是定义。然而对于 extern a 来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为“定义”,而把不需要建立存储空间的声明称之为“声明”。很明显我们在这里指的声明是范围比较窄的,即狭义上的声明,也就是说非定义性质的声明,例如:在主函数中:
int main() {
extern int A;
//这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
dosth(); //执行函数
}
int A; //是定义,定义了A为整型的外部变量

外部变量的“定义”与外部变量的“声明”是不相同的,外部变量的定义只能有一次,它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变量的定义点之前)。系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。对于外部变量来讲,初始化只能是在“定义”中进行,而不是在“声明”中。所谓的“声明”,其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是为了“提前”引用该变量而作的“声明”而已。extern 只作声明,不作任何定义。
(我们声明的最终目的是为了提前使用,即在定义之前使用,如果不需要提前使用就没有单独声明的必要,变量是如此,函数也是如此,所以声明不会分配存储空间,只有定义时才会分配存储空间。)
用static来声明一个变量的作用有二:
(1)对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在。
(2)外部变量用static来声明,则该变量的作用只限于本文件模块。

‘陆’ c语言中关于外部变量应用的问题

可以赋值到函数里的形参,但不改变实参的值。因为实参传给形参是值传递。形参是开辟新的地址接受实参传给的值。。改变时只改变形参(即这个函数里的变量)。函数外部传递值进来的变量不改变。。

‘柒’ C语言 外部变量函数的调用

main()中的extem a;改为extem int a; extem用于将用于将其他源文件的函数或变量的作用范围扩大到整个程序。在定义是不需要,只有在应用前用申明语句申明即可,如extern void print(int n);
你也没说哪不懂,只能回答这么多了,希望对你有帮助

‘捌’ C语言关于外部变量

一般不把这两句放在同一个源文件里。

第一个是一个变量的定义,第二个是变量的声明。

在文件a.c中定义一个USER login_user;但是在文件b.c中要用到这个全局变量,就采用声明的方法,extern USER login_user;来告诉编译器,我需要用一个变量login_user;但是这个变量已经在别的文件中定义了——就这个意思。

声明和变量定义的关系
一般在函数调用里面
int func1(int a,int b)
{......}

int func2(......)
{
......
int x=1;
int y=2
func(x,y);
......
}

上面的x和y就是定义。而a和b就是声明。

‘玖’ c语言外部函数改变调用函数变量的问题

但是如果原变量是数组,好像不用指针也能完成改变。这是为什么---因为C语言数组作参数的时候是传的首地址,也相当于指针
入swap函数的是&a,&b, 而swap函数本身却是*a,*b,前面是实参,后面是形参,都是指针,完全不矛盾,声明的时候*表示指针,实际的值加&表示指针,不要被表象迷惑

‘拾’ c语言什么是外部变量是什么意思

外部变量是在函数外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的结尾。在此作用域内,全局变量可为各个函数所引用。编译时将外部变量分配在静态存储区。
有时要用extern来声明外部变量,以扩展外部变量的作用域。 也可用static声明外部变量,使该变量不能被其他文件引用。

用extern声明外部变量

extern可省略不写。
本文件里:在一个文件里,有不止一个函数,外部变量在第一个函数后面定义。若用extern在第一个函数前声明该变量则该变量可以在第一个函数中使用。
多个文件中:在其他文件中若想要用该文件中已声明的变量,则在文件头部声明该变量,即可在文件中使用。

用static声明外部变量

static声明后该外部变量就只能在本文件中使用。