黑马程序员——零基础学习iOS开发——07 全局变量、局部变量、static和extern关键字
来源:互联网 发布:淘宝上的呼死你叫什么 编辑:程序博客网 时间:2024/06/10 08:18
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ———
一、全局变量和局部变量
根据变量的作用域,可以分为:局部变量、全局变量
1.局部变量:
1> 定义:在函数(代码块)内部定义的变量(包括函数的形参)
2> 作用域:从定义变量的那一行开始,一直到代码块结束
3> 生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收
4> 没有固定的初始值
2.全局变量
1> 定义:在函数外面定义的变量
2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)
3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁
4> 默认的初始值就是0
3.全局变量和局部变量可以重名
#include <stdio.h>extern int a; // 这里只是全局变量a的声明extern int a; // 可以多次声明int main(){ int a; // 这个a是个局部变量 a = 10; // 这里的a和第8行是同一个a return 0;}int a; // 这是一个全局变量,和第8、9行的a不是同一个a
4.全局变量可以重复定义
1)我们从下图可以看出,全局变量可以重复声明、重复定义,但不能重复定义且赋值
2)在多个文件中,全局变量同样可以重复定义。
你在一个源文件中无论写多少遍全局变量int a;,它们代表的都是同一个变量。
假如在另一个源文件中也有全局变量int a;,那么这两个源文件的所有全局变量int a;都代表着同一个变量。
二、static和extern关键字对变量的作用
1.extern声明全局变量
在C语言中,一个函数不可以访问在它后面定义的全局变量。
#include <stdio.h>// 第一种办法:在函数前面定义aint a;int main(){ a = 10; return 0;}
#include <stdio.h>extern int a; // 这里只是a的声明extern int a; // 这里只是a的声明,可以多次声明int main(){ a = 10; return 0;}int a;
2.static定义私有全局变量
但很多时候,我们并不想让源文件中的全局变量跟其他源文件共享。
当你想定义一个相当于私有的全局变量,那么你就得用static关键字来定义变量。
int a;test.c文件中
static int a;这样写的效果是:main.c中的全局变量a是共有的,而test.c文件中的全局变量a是test.c私有的。
三、static和extern关键字对函数的作用
1.内部函数与外部函数
外部函数:如果在当前文件中定义的函数允许其他文件访问、调用,就称为外部函数。C语言规定,不允许有同名的外部函数。
内部函数:如果在当前文件中定义的函数不允许其他文件访问、调用,只能在内部使用,就称为内部函数。C语言规定不同的源文件。
2. extern声明、定义外部函数
#include <stdio.h>extern void test(); // 声明外部函数testint main(){ return 0;}extern void test() // 定义外部函数test{ printf("test");}
其实,函数前面什么都不写时,默认就是外部函数,所以extern可以省略。
3. static声明、定义内部函数
有时候,我们可能想定义一个"内部函数”,也就是不想让其他文件访问本文件中定义的函数。
这时就可以用static定义一个内部函数,这个函数可以和其他文件的中的函数重名
#include <stdio.h>static void test(); // 声明内部函数testint main(){ return 0;}static void test() // 定义内部函数test{ printf("test");}
小结:
默认情况下,一个全局变量是可以供多个源文件共享的,也就说,多个源文件中同名的全局变量都代表着同一个变量
对变量的作用:
1.static
如果在定义全局变量的时候加上static关键字,此时static的作用在于限制该全局变量的作用域,只能在定义该全局变量的文件中才能使用,跟其他源文件中的同名变量互不干扰
2.extern
extern可以用来声明一个全局变量,但是不能用来定义变量。extern可以省略。
1.static
》在定义函数时,在函数的最左边加上static可以把该函数声明为内部函数(又叫静态函数),这样该函数就只能在其定义所在的文件中使用。如果在不同的文件中有同名的内部函数,则互不干扰。
》static也可以用来声明一个内部函数
2.extern
》在定义函数时,如果在函数的最左边加上关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。
》在一个文件中要调用其他文件中的外部函数,则需要在当前文件中用extern声明该外部函数,然后就可以使用,这里的extern也可以省略。
To be continue……
- 黑马程序员——零基础学习iOS开发——07 全局变量、局部变量、static和extern关键字
- 黑马程序员——c语言的全局变量和局部变量,static和extern,预处理指令
- 黑马程序员——C语言之全局变量和局部变量以及static和extern修饰符的作用
- 黑马程序员——零基础学习iOS开发——03 c语言基础语法:关键字、标示符、注释、数据结构、变量、变量内存分析、scanf函数
- 黑马程序员IOS基础---C语言学习之static和extern关键字对函数以及变量的作用
- 全局变量 局部变量和关键字static和extern的使用
- 黑马程序员——OC语言基础---extern和static关键字
- C++——static关键字(全局变量,局部变量,函数)
- 黑马程序员—C学习笔记—static和extern修饰的函数和变量
- 局部变量和全局变量,extern和static
- 黑马程序员——static和extern
- 黑马程序员—C学习笔记—static和const修饰的全局与局部变量
- 黑马程序员—C语言—局部变量与全局变量
- iOS 静变量static、全局变量extern、局部变量、实例变量
- static & extern 全局变量 局部变量...
- 全局变量、局部变量与关键字static、extern的使用分析
- 黑马程序员——C语言的关键字 typedef,static,extern和预处理指令
- 黑马程序员——C语言知识点总结之指针和关键字static、extern
- SpringMVC学习总结(二)
- wamp下安装php_memche扩展
- DNS原理及其解析过程
- 文章标题
- 高并发之Memcached实战第10课-“Memcached Get获取数据”部分代码分享2
- 黑马程序员——零基础学习iOS开发——07 全局变量、局部变量、static和extern关键字
- 机器学习 Generative Learning Algorithm (B)
- iOS7 tabbar遮盖tableview的cell解决方法
- GTK - 如何去掉背后的黑色的控制台窗口?
- 【3.22】
- 不建立临时变量 交换两个数字
- 安卓AutoFitTextView实例Dmeo分享自适应
- [不定项选择题]
- Android bound service 详解三:使用Messenger