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

原创 2015年12月27日 14:08:31
/*
我们知道一个大的程序不可能把所有的函数都写在一个文件里,而是要书写多个文件,那么问题来了,在另一个文件中的函数,这个文件然后调用呢??


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



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


*/

相关文章推荐

学习笔记------数据结构(C语言版) 静态链表

//Function realization.cpp #include"predefined.h" #include"StaticLinkedList.h" extern SLinkList spa...
  • CYTCHAN
  • CYTCHAN
  • 2016年01月11日 15:09
  • 590

C语言的学习笔记2-函数

如果把所有代码全部放在main函数里面,太拥挤了,不容易读懂理解代码,也不利于团队开发,所有除了main函数以外,我们需要编写其它函数来辅助main函数。 一.函数的定义格式 返回值类型    函数名...

iOS开发学习笔记 2-6 C语言部分 函数及变量的作用域

一、函数的基本知识            函数就是一系列语句的组合,通常由返回值、形参、函数体组成;      函数的使用步骤分为三个步骤:声明、定义、调用。            1、函数定义  ...
  • lboboby
  • lboboby
  • 2014年05月21日 16:20
  • 642

C语言学习笔记(三)函数和内存

一、函数相关 /* 参数注意点 1.形式参数:定义函数时函数名后面中的参数,简称形参 2.实际参数:调用函数式传入的具体数据,简称实参 3.实参个数必须等于形参个数 4.函数体内部不能定义和...

2016 11/12 片【C语言】学习笔记-函数

1.在⼀个数组中查找⼀个指定的整数,找到了之后就返回这个值所在的地址,没找到返回NULL 2.对值进⾏偶校验,求⼀个数的⼆进制中1的个数是奇数还是偶数。 三种统计方法:(1)value&=(val...

学习笔记C语言 open fgets strstr strchr strncpy snprintf函数

open: 1 /*open.c*/ 2 #include   3 #include   4 #include   5 /* 6  * O_RDONLY 只读方式打开  7  * O_WRONLY 只...

C语言malloc,calloc,realloc,free内存分配函数学习笔记

内存分配 使用内存分配函数可以对内存进行分配、释放等操作。内存分配函数一般返回的是void类型的指针,传统上曾使用返回char类型的指针,因为char类型只占据1字节。而最新ANSI规定返回void...
  • zrf2112
  • zrf2112
  • 2015年02月23日 22:34
  • 319

C语言学习笔记(19跨函数使用内存)

1、静态变量不能跨函数使用内存 /* 此代码是错误的,目的是为了演示静态变量不能跨函数使用 静态内存由系统分配,当函数执行完毕由系统自动释放 */ # include # include v...
  • ljf5566
  • ljf5566
  • 2011年10月15日 15:06
  • 1089

学习笔记1——C语言库函数在文本中指定地方添加和删除一段

调用C语言库函数,在文本中添加和删除这段(红色标记)     End Extended Reserved Data:     [Reserved Data]     0x4f505448   ...

黑马程序员----C语言学习笔记之函数

C语言之函数 1.函数的概述 C源程序是由函数组成的。可以说C程序的全部工作都是由各种各样的函数完成的,所以也把C语言称为函数式语言。 2.函数的分类 2.1从函数定义的角度看,函数可分为库函数和用户...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言学习笔记-------伊能C语言学习笔记------静态函数初步
举报原因:
原因补充:

(最多只允许输入30个字)