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. Android Studio设置,鼠标放上去有提示

    设置如下: 1. 2. 勾选就可以了

  2. c# webbrowser 清除当前网站 cookie

    //这个方法可以创建一个清除当前页面下指定域的所有cookie //必须是可以访问的域,比如你访问的是qq.com,那么可以清除www.qq.com,qzone.qq.com等页面的cookie // ...

  3. Unity 教程和源码

    12个Unity3D游戏源码 -  新手必备 愤怒的小鸟攻略技巧秘籍 NGUI 教程收录大全:http://forum.exceedu.com/forum/forum.php?mod=viewthre ...

  4. bzoj4177: Mike的农场

    类似于最大权闭合图的思想. #include<cstdio> #include<cstring> #include<iostream> #include<al ...

  5. 《C++ Primer 4th》读书笔记 第5章-表达式

    原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3912114.html

  6. Android UI——分享一个登录缓冲界面

    效果如上图 所示 :就是下面的 loading  字母会按顺序一个个的 动起来 ,很好的效果 代码说明 请参考 该文:http://blog.csdn.net/xyz_lmn/article/deta ...

  7. System.arraycopy方法

    数组的复制有多种方法,其中有一种就是System.arraycopy方法,传闻速度也很快. 方法完整签名: public static void arraycopy(Object src, int s ...

  8. 利用Modbus协议读取电能表的数据

    1.电脑要有485转232的转换器2.你要看懂DLT_645—1997规约的通讯协议,现在大多电能表厂都会遵行这个通讯协议,DLT_645—1997规约不是最新的通讯协议.就看电表的使用什么通讯协议. ...

  9. mysql 基础命令入门学习

    登陆到mysql mysql -u 用户名 -p [数据库]   显示数据库 show databases;   使用一个数据库 use 数据库名;   显示表 show tables;   纠正数据 ...

  10. cgroup的测试数据

    [root@xxxx /cgroup/memory/rule3021]#cat memory.limit_in_bytes503316480   480M [root@xxxx /cgroup/mem ...