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. oracle portlist.ini

    Enterprise Manager Database Control URL - (orcl) :https://redhat4.7:1158/em [root@redhat4 install]# ...

  2. Android开发之定义接口暴露数据

    写了一个网络请求的工具类,然后想要获取到网络请求的结果,在网络工具类中写了一个接口,暴露除了请求到的数据 代码: package com.lijingbo.knowweather.utils; imp ...

  3. vpn局域网共享

    vpn局域网共享 更改网关为vpn共享主机地址 在“命令运行符”处,挨个键入下列命令,并回车生效: regsvr32 Softpub.dll regsvr32 Wintrust.dll regsvr3 ...

  4. UVa 11426 (欧拉函数 GCD之和) GCD - Extreme (II)

    题意: 求sum{gcd(i, j) | 1 ≤ i < j ≤ n} 分析: 有这样一个很有用的结论:gcd(x, n) = i的充要条件是gcd(x/i, n/i) = 1,因此满足条件的x ...

  5. POJ 3041 Asteroids (最小点覆盖集)

    题意 给出一个N*N的矩阵,有些格子上有障碍,要求每次消除一行或者一列的障碍,最少消除多少次可以全部清除障碍. 思路 把关键点取出来:一个障碍至少需要被它的行或者列中的一个消除. 也许是最近在做二分图 ...

  6. (转)TCP协议那些事

    (上) TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是 ...

  7. BUFFER CACHE之调整buffer cache的大小

    Buffer Cache存放真正数据的缓冲区,shared Pool里面存放的是sql指令(LC中一次编译,多次运行,加快处理性能,cache hit ratio要高),而buffer cache里面 ...

  8. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

  9. tcprstat源码分析之tcp数据包分析

    tcprstat是percona用来监测mysql响应时间的.不过对于任何运行在TCP协议上的响应时间,都可以用.本文主要做源码分析,如何使用tcprstat请大家查看博文<tcprstat分析 ...

  10. hdu 2473 Junk-Mail Filter(并查集_虚节点)2008 Asia Regional Hangzhou

    感觉有些难的题,刚开始就想到了设立虚节点,但是实现总是出错,因为每次设立了虚节点之后,无法将原节点和虚节点分开,导致虚节点根本无意义. 以上纯属废话,可以忽略…… 题意—— 给定n个点(0, 1, 2 ...