C语言并不是面向对象的程序设计语言,但是我们可以通过extern和static实现程序的封装和隐蔽。
举个例子,我们在主函数中要使用一个栈,栈的实现代码在stack.c中,我们要主函数不能访问stack.c中的除压栈,出栈之外的所有变量和函数,那么我们就可以把这些不想被访问的变量或函数声明为static,这样主函数将无法访问。
下面是代码例子:
main.c文件:
1 2 3 4 5 6 7 8 | int main(void) { extern void push(char); extern char pop(void); ... } |
stack.c文件:
1 2 3 4 5 6 7 8 9 10 | static char stack[512]; static int top = -1; void push(char c) { stack[++top] = c; } char pop(void) { return stack[top--]; } |
这样,就实现了栈内部变量的隐蔽和保护。