欢迎来到山村网

深入理解C语言 static、extern与指针函数

2019-03-02 10:59:28浏览:142 来源:山村网   
核心摘要:这篇文章主要介绍了C语言 static、extern与指针函数,有需要的朋友可以参考一下1.exit(0)正常退出程序exit(1)程序异常时退出程序

这篇文章主要介绍了C语言 static、extern与指针函数,有需要的朋友可以参考一下

1.exit(0)正常退出程序exit(1)程序异常时退出程序2.static(静态变量)修饰局部变量在局部变量使用static修饰,会延长局部变量的存在期。但我们需要注意一下几点:•虽然static修饰变量的生存期很长,但它始终是局部变量,不能在其他函数中使用•static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝3.extern(外部变量) 修饰全局变量extern 不但可以修饰变量还可以修饰函数全局变量范围已经很广了,为什么还要用extern来修饰呢?看下面一个例子代码如下:#include "stdio.h"void main(){ extern a; extern b; printf("a=%d,b=%d",a,b); }int a=13,b=5;上面例子中,在定义了a,b之前就使用它,也就是说extern扩展了全局变量的作用范围。extern不仅上边例子这种用法,在不同文件中的全局变量也可以使用extern来使用。4.指针函数定义:指针函数就是函数类型和返回值都是指针的函数。指针函数的一般形式:类型 *函数名(参数列表)下面用一个例子来体会一下指针函数的妙用吧代码如下:#include "stdio.h"char * SubString(char s[],int i,int j);char *SubString1(char s[] ,char temp[], int i,int j);void main(){char string[]="I Love C Language";char *ps=NULL;char temp[100];ps=SubString(string,2,9);printf("%sn",ps); SubString1(string,temp,2,9);printf("%sn",temp);}char * SubString(char s[],int i,int j){static char temp[100];int m,n;for(m=0,n=i;n<=j;m++,n++){temp[m]=s[n];}temp[m]='';return temp;}char *SubString1(char s[] ,char temp[], int i,int j){int m,n;for(m=0,n=i;n<=j;m++,n++){temp[m]=s[n];}temp[m]='';}
(责任编辑:豆豆)
下一篇:

C++求阶乘的两种方法

上一篇:

C#中ArrayList的使用方法

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com