C语言学习笔记-------伊能C语言学习笔记------静态函数初步

来源:互联网 发布:qt初学者 知乎 编辑:程序博客网 时间:2024/05/16 14:30
/*
我们知道一个大的程序不可能把所有的函数都写在一个文件里,而是要书写多个文件,那么问题来了,在另一个文件中的函数,这个文件然后调用呢??


这就是: 函数的跨文件调用问题!



C 语言规定,所有的函数,在没有static保护的情况下,都可以跨文件调用!
C语言为什么要引出外部函数和内部函数机制???


他们是为了解决什么问题而提出的???
他们各有什么特点???






像全局变量一样,如何解决由于C语言允许的跨文件调用函数机制所带来的封装性问题呢???


即:如何实现在一个文件中定义的函数只能由本文件调用呢??






static函数机制:
解决了:
 1.static  避免函数跨文件重名的问题
 2.static  避免本个源文件的函数被外部所用
 3.static加上以后,就叫内部函数,也叫静态函数
 4.C语言如果没有static,那么就可以被外部所调用
*/




#include<stdio.h>


#include<stdlib.h>


void print()
{
printf("很好很强大");


}




void  printstr(char *p)
{
printf("%s", p);   //打印字符串




}
void main()


{

print();


printstr("锄禾日当午,学C真是苦");


system("pause");


}





//另一个文件  anotherfun.c


#include<stdio.h>
#include<stdlib.h>




/*


我们知道一个大的程序不可能把所有的函数都写在一个文件里,而是要书写多个文件,那么问题来了,在另一个文件中的函数,这个文件然后调用呢??


这就是: 函数的跨文件调用问题!






像全局变量一样,如何解决由于C语言允许的跨文件调用函数机制所带来的封装性问题呢???


即:如何实现在一个文件中定义的函数只能由本文件调用呢??




*/
//print函数重名,C语言默认调用函数可以跨文件调用


static  void  print()  //内部函数,anotherfun.c之外的外部文件无法调用,只有 anotherfun.c文件内可以调用。
{
printf("china is great");
}


/*
static 限定函数作用域机制解决了:
1.由于C语言允许的跨文件调用函数机制所带来的封装性问题
2.static避免了跨文件重名的问题。





static 又叫内部函数


*/

0 0
原创粉丝点击