您的位置:首页 > 编程语言 > C语言/C++

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

2015-12-27 14:08 411 查看
/*

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

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

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 又叫内部函数

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: