static用法见:

1、http://www.cnblogs.com/yezhenhan/archive/2011/10/31/2229724.html
2、http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_5297.html
extern用法:
1、http://blog.csdn.net/cameracanon/article/details/4061419
2、http://blog.csdn.net/liu1028701143/article/details/7359381
简单地理解static:
(1)如果static放在头文件中的话,被2个不同的cpp文件分别引入时,那么这两个cpp都有一个自己的这个static变量,并且相互不受影响。
(2)static用来修饰全局变量时,只能被本文件引用,不会被其他文件访问和修改,其他文件可以定义相同名字的变量;
(3)static用来修饰函数时,只能被本文件引用,不会被其他文件访问和修改,其他文件可以定义相同名字的函数;
(4)static用来修饰局部变量(即某个函数内部的变量)时,退出函数时,该变量仍保留着相应的值;
例如:
void count();
int main()
{
   int i;
   for (i = 1; i <= 3; i++)
     count();
   return 0;
}
void count()
{
   static num = 0;
     num++;
     printf(" I have been called %d",num,"timesn");
}
输出结果为:
I have been called 1 times.
I have been called 2 times.
I have been called 3 times.
简单地理解extern:
(1)extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
(2)extern用在变量声明中常常有这样一个作用,你在*.c文件中定义声明了一个全局的变量,这个全局的变量如果要被其他x.c文件引用,就放在*.h中并用extern来引用声明,然后再x.c中包含该*.h头文件。

(3)(个人规则)函数的定义声明带不带extern其实都表示同一个意思,即不带时默认是extern的,所以一般定义声明时不带extern。

(4)(个人规则)函数的引用声明必须带关键字extern,暗示这个函数可能在别的源文件里定义,没有其它作用。

(5)如果定义函数(函数的具体实现)的c/cpp文件在对应的头文件中声明了所定义的函数(头文件中该函数前可带可不带extern),那么在其他c/cpp文件中要使用这些函数,只需要包含这个头文件即可。如果你不想包含头文件,那么你要在其他c/cpp中使用extern声明该函数(仅仅表明这个函数可能在别的源文件里定义,没有其它作用)。如下所述:

first.h头文件内部:

#ifndef Function

#define Function

void count();

……

#endif

first.c文件内部:

#include "first.h"//count()函数的声明

……

void count()

{

……

}

//如果不想包括头文件,second.c文件内部:

extern void count();//表明是其他文件里面的函数

//包含头文件,second.c文件内部

#include "fisrt.h"//这个就包含了 void count()函数的声明

static和extern的用法总结相关推荐

  1. c语言中的static和extern,C语言extern与static的用法,及extern “c

    C语言extern与static的用法,及extern "c " 一.c语言static与extern的用法 1.static和extern: 大工程下我们会碰到很多源文件. 文件 ...

  2. 【濡白的C语言】初学者-从零开始-4(欢喜冤家static与extern)

    前言 本次主要介绍两个关键字static.extern,主要与函数.变量的作用域与生命周期有关. 目录 extern C语言函数隐式存储方式 全局变量 函数 static 局部变量 全局变量 函数 总 ...

  3. C语言中static与extern用法总结

    前言-变量的储存方法 在C语言中,供用户使用的储存空间分为3个部分,程序区.静态储存区和动态储存区.其中,程序区存放的是可执行程序的机器指令,静态储存区存放的是在程序运行期间需要占用固定储存单元的变量 ...

  4. static的三种用法,定义静态变量,静态函数,静态代码块!

    static的三种用法,定义静态变量,静态函数,静态代码块! 1.定义静态变量 class PersonStatic { //静态变量的特点 //1.静态变量无需生成对象就可被调用,可以使用类名和对象 ...

  5. extern c用法解析

    extern "c"用法解析 字数1875 阅读38631 评论4 喜欢20 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟 ...

  6. c语言extern_【零基础C语言】- static和extern关键字 - 对变量的作用!

    上一篇文章介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量 ...

  7. 【c++】c++常见关键词const、static、extern、explicit含义

    c++里有几个常见的关键词,比如const.static.extern.explicit,这里就简单介绍下每个关键词的含义以及使用场景. const const相对来说还是比较简单易懂的,就是被修饰的 ...

  8. C#中static静态变量的用法

    原文:C#中static静态变量的用法 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析 ...

  9. extern 关键字用法

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

最新文章

  1. TensorFlow2.0来了
  2. java方法定义 与调用_Java方法的定义及调用
  3. ubuntu下SVN服务器安装配置
  4. 留言本的漏洞挖掘总结
  5. 技术系统进化法则是_技术系统进化法则
  6. Spring Boot html页面解析之jsoup
  7. 引导linux为什么要用实模式,Linux引导过程与故障排除|第1章:Linux启动流程详解...
  8. .net framework开发winform_.NET架构开发应知应会
  9. 给 console 添加颜色
  10. 引用计数和AddRef、Release
  11. 汉语词典 mdd mdx 下载_三款你必须拥有的英文词典软件
  12. 交换机与路由器登录密码破解
  13. JavaWeb课堂笔记
  14. 学习要有但行好事,莫问前程的心态
  15. 【JS学习笔记】2.JavaScript变量
  16. 【时间序列】Holt-Winters 指数平滑方法及其 Python 实践
  17. js 实现批量下载页面中的图片
  18. autojs教程:贝壳赚app脚本代码
  19. RetianNet在DDSM(4)
  20. 扔硬币先手获胜概率问题

热门文章

  1. django学习之路
  2. JS实现大整数乘法(性能优化、正负整数)
  3. PictureBox
  4. JSP中的:request.getScheme()+://+request.getServerName()+:+request.getServer
  5. CSDN博客投票活动开始了
  6. Linux 关闭服务后 鼠标 键盘用不了
  7. Linux下编译安装Apache httpd 2.4
  8. 《深入剖析Tomcat》阅读(三)
  9. oracle中游标的使用
  10. 硬链接与符号链接的比较?