A. extern函数

一个c文件生成一个obj文件
 
外部函数:允许其他文件访问、调用的函数(默认函数为外部函数),不允许存在同名的外部函数
 
my.c
 //define a extern function perfectly
void extern testEx()
{
printf("my.c ==> call external function\n");
}
main.c
 //declare the function first to apply the C99 compiler standard
void extern testEx(); int main(int argc, const char * argv[]) {
testEx();
return ;
}
 
B. static函数
内部函数:只能在当前文件中使用的函数,不同的源文件可以有同名的内部函数
使用static修饰就可以定义内部函数
 
one.c
 static void one()
{
printf("one.c ==> one()\n");
}
 
C.extern 与全局变量
java中可以调用后定义变量
c不能使用定义前的全局变量
ps:定义和声明是两个不同的步骤
 //first solution, define the variable before calling
//int a; //declare a variable
extern int a; int main(int argc, const char * argv[]) { a = ; return ;
} //define the variable
int a;
若想在某个全局变量声明之前使用,就需要使用extern修饰变量,表示该变量即将在下面定义。
 void test()
{
extern int b;
printf("b = %d\n", b);
} int b = ;
 
D.static和全局变量
定义和声明一个内部变量,只能被本文件访问,不能被其他文件访问
 
 
E.static与局部变量
被static修饰的局部变量,生命周期能周延长到程序结束
但是作用域没有改变
 void test()
{
static int e = ;
e++;
printf("e = %d\n", e);
}
main调用
    test();
    test();
    test();
 
out:
e = 11
e = 12
e = 13
 
 
F.全局/局部变量:
变量可以在函数内部或者外部声明
 
a.全局变量中:
全局变量(函数外)可以重复声明,不能重复定义
int a;//标记为weak,允许进行定义
int a = 4;//succuss,标记为strong,以此变量为同名全局变量的标准,不允许进行多重定义
int a = 5;//error
如在不同的源文件中存在同名全局变量,都是指的同一个变量
 
b.局部变量:
局部变量(函数内)不能重复声明
 
内部变量对外部变量的影响
可以区分开两个同名变量
 
 
static & extern 总结
extern能够声明一个全局变量,但是不能定义?
—》能声明,不能重复定义
static 可以声明并定义一个内部变量?
 
 
 
     

[C语言 - 6] static & extern的更多相关文章

  1. 【语法】修饰符 static extern const

    转载自:http://my.oschina.net/u/2560887/blog/552683 一.C语言中的static的作用 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有 ...

  2. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  3. 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)

    李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...

  4. 存储类型auto,static,extern,register的区别 <转>

    变量和函数的属性包括数据类型和数据的存储类别,存储类别指数据在内存中存储方式(静态和动态),包含auto,static,register,extern四种. 内存中.具体点来说内存分为三块:静态区,堆 ...

  5. const define static extern

    const const意味着"只读",欲阻止一个变量被改变,可以使用const关键字 const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p) define #define ...

  6. C语言的static和extern关键字

    我的博客:www.while0.com 如果A.c要包含B.c里的一个变量或函数,则在A.c中要用extern关键字声明.注意: ①如果是包含的B.c里的函数,则在A.c里声明的时候可以不写exter ...

  7. C语言-1.static 和 extern使用,2.文件,3.数据块读写

    1.static 和 extern使用, 1)修饰局部变量 static修饰局部变量特点:延长局部变量的生命周期 ,static修饰的局部变量只会被执行一次 extern不能修饰局部变量 2)修饰全局 ...

  8. C语言之Static

    1.全局静态变量 在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量. 1)内存中的位置:静态存储区(静态存储区在整个程序运行期间都存在) 2)初始化:未经初始化的全局静态变量 ...

  9. 【粉丝问答10】C语言关键字static的使用详解

    视频地址:https://www.ixigua.com/6935761378816819748 粉丝提问 粉丝问题,总结一下: 关键字static的使用方法. 要想搞清楚关键字static的使用方法, ...

随机推荐

  1. gulp 使用mailgun服务器发送邮件

    1.首先你需要创建一个 mailgun 账户,没有请去注册一个. 注册之后会有 mailgun 会给你一个默认的子域名,你就可以使用这个子域名去发送邮件了,如下图: 2.gulp创建任务: var s ...

  2. git cheat sheet,git四张手册图

  3. 设置图片Alpha

    Drawable ico = getResources().getDrawable(R.drawable.search_box);                       mSearchLayou ...

  4. easyui-dialog中文件上传处理

    function openDialog() { // $('#dlg').dialog('open'); //EasyUi的dialog中文件上传,后台获取不到文件,需要改写为下面这样 $(" ...

  5. Android开发之WebService介绍

    经常有网友问:“在Android平台如何调用WebService”?经过沟通我发现,甚至有些朋友连什么是WebSerivce都不知道就在问怎么使用,更别说和WebService有关的SOAP.WSDL ...

  6. angular依赖注入的理解(转)

    使用过java进行开发的人肯定知道大名鼎鼎的spring框架,对于spring的IOC肯定也有所了解,通过配置文件定义好bean之后,如果需要使用这些bean,不需要自己去实例化,而是跟spring这 ...

  7. crtmpserver流媒体服务器的介绍与搭建

    crtmpserver流媒体服务器的介绍与搭建 (2012-02-29 11:28) 标签:  crtmpserver  C++ RTMP Server  rtmp  Adobe FMS(Flash ...

  8. [转] 使用C#开发ActiveX控件

    双魂人生 原文 使用C#开发ActiveX控件 ActiveX 是一个开放的集成平台,为开发人员.用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内 ...

  9. Android控件之GridView

    GridView是一项显示二维的viewgroup,可滚动的网格.一般用来显示多张图片. 以下模拟九宫图的实现,当鼠标点击图片时会进行相应的跳转链接. 目录结构 main.xml布局文件,存放Grid ...

  10. SSH超时断开(ClientAliveInterval和ClientAliveCountMax )的使用

    有 2个方法 1 配置服务器 打开 /etc/ssh/sshd_config 找到 ClientAliveInterval 参数,如果没有就自己加一行 数值是秒,比如你设置为300,就是5分钟. Cl ...