首页 > 编程知识 正文

c语言全局变量默认值(c语言全局函数)

时间:2023-05-03 06:59:28 阅读:77249 作者:1424

3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com /一、static全局变量与普通全局变量有何不同?

在说明全局变量(外部变量)之前加上static,即可构成静态全局变量。

全局变量本身是静态存储方法,静态全局变量当然也是静态存储方法。 两者的保存方法都没有区别。

这一区别在于,非静态全局变量的范围是整个源程序。 如果一个源程序由多个源文件组成,则非静态全局变量对每个源文件都有效。 静态全局变量限制作用域。 这意味着它只在定义变量的源文件中有效,不能在同一源程序的其他源文件中使用。 静态全局变量的范围仅限于一个源文件中,并且仅对该源文件中的函数通用,从而可以防止其他源文件中发生错误。

静态全局变量只初始化一次,不被其他文件单元引用;

将局部变量更改为静态变量后,更改保存方法将更改生存期。 将全局变量更改为静态变量会改变范围,限制使用范围。 静态局部变量被初始化一次,下次根据上次的结果值;  

三、静态函数与普通函数有什么不同?

静态函数与普通函数作用域不同,仅在本手册中有。 仅用于当前源文件的函数必须描述为内部函数(静态限定函数),内部函数必须在当前源文件中描述和定义。 对于可以在当前源文件之外使用的函数,必须在头文件中说明使用这些函数的源文件中包含此头文件。

内存中只有一个静态函数,而常规函数在每次调用时维护一个副本。 3358 www.Sina.com/http://www.Sina.com/1.1同时编译多个文件时,所有没有静态前缀的全局变量和函数都将全局显示。 为了理解这句话,我举例说明。 同时编译两个源文件。 一个是static_extern.c,另一个是static_main.c。 1.2 static _ main.c# include stdio.hvoidmain (void ) {extern char i; //externvariablemustbedeclaredbeforeuseprintf (' % c ',I ); msg (; 返回0; } 1.3 static_extern.c char i='A '; //global variablevoid msg () printf ) Ilovebeijing! I Love hanyue! n '; } 1.4编译执行

1.5“为什么static_extern.c中定义的全局变量I和函数msg在static_main.c中可用? 如上所述,所有没有静态前缀的全局变量和函数都具有全局可见性,并且可以访问其他源文件。 在此示例中,I是全局变量,msg是函数,并且都没有静态前缀,因此将为单独的源文件static_main.c显示。 添加静态时,其他源文件将隐藏。 例如,如果在定义I和msg之前添加静态,则static_main.c将无法看到它们。 利用此特性,可以在不同文件中定义同名函数和同名变量,而不必担心名称冲突。 静态可以用作函数和变量的前缀。 对函数来说,静态角色仅限于隐藏。 33558 www.Sina.com/2.1 static _ main.c# include stdio.hint fun (void ) { static int count=10; //其实这个赋值语句是返回计数- -; }int count=1; intmain(void ) printf (全局 ttlocalstaticn ); for (; 计数=10计数) printf('%dtt%dn ',count,fun ) ); 返回0; } 2.2编译运行http://www.Sina.com/3.1 static _ main.c# include stdio.hinta; 输入主(语音) {输入I; 静态char str [ 10 ]; printf(integer:%d; string:(Begin ) %s ) end ) n ',a,str ); 返回0; } 2.2编译执行

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。