c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区
一、几个修饰关键字
全局变量:
全局变量跟函数一样也分为声明和实现。如果是全局变量,实现在它调用之后,那么需要在调用之前进行声明。
注意:全局变量的声明只能写在函数外,写在函数就不是全局变量了而是局部变量。
static:
修饰局部变量:
可以把局部变量变为静态变量。意思就是:程序一启动就加载,程序退出才会回收空间(跟全局变量很像) 。
静态变量:用static修饰的局部变量就叫静态变量。
修饰全局变量:
让全局变量只能在本模块中访问。
修饰函数:
修饰函数的话,只能在本模块中访问。
extern:
不能修饰局部变量。
修饰全局变量:
让全局变量在所有模块中都能访问。
修饰函数:
extern修饰函数,代表所有模块都能访问。它是默认的(不写就是extern)
以下两个都只能修饰局部变量。
auto(了解):默认的,交给系统自动管理内存(放在栈区),就是什么时候开辟,什么时候回收,系统管理。
register(了解):把变量加到寄存器。寄存器就是CPU临时保存数据的地方,特点是:非常快,但是容量小,造价金贵,所以只能保存极少的数据。
后编译时代,意思就是编译器在编译的时候会自动根据你代码进行优化,编译器帮你判断什么时候用auto,什么时候用register
二、内存分区
栈区: 所有局部的变量,由系统自动管理,出了作用域就回收
堆区: 程序员自己申请开辟的空间,都是在堆区,程序员自己维护回收
全局区: 所有的全局变量和静态变量,程序一启动就开辟,程序退出才回收
bss段和data段
bss段保存的是所有未初始化的全局变量和静态变量(只是记录一下,记录有多大)
data段保存的是所有已初始化的全局变量和静态变量
常量区:rodata段。就是所有的常量。文本常量(字符串),程序一启动就开辟,程序退出才回收
代码区:就是编译后的二进制代码。程序一启动就开辟,程序退出才回收
text段
从上往下,地址是从高到低
只需要记住:每个区分别放的是什么东西就行了。
c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区的更多相关文章
- c语言学习之基础知识点介绍(八):函数的基本用法
本节开始说函数. 一.函数的基本用法 /* 作用:可以实现代码的复用,在一定程度上解决代码冗余的问题:方便后期维护. 语法: void 函数名(){ 函数体; } 函数命名要有意义,遵守驼峰命名法. ...
- c语言学习之基础知识点介绍(三):scanf函数
本节继续介绍c语言的基础知识点. scanf函数:用来接收用户输入的数据. 语法:scanf("格式化控制符",地址列表); 取地址要用到取地址符:&(shift+7) 例 ...
- c语言学习之基础知识点介绍(二):格式化控制符和变量的补充
上节简单介绍了c语言中的一些基础知识点,本节将对之前介绍的不够详细的知识点进行补充. 格式化控制符的消息介绍: %d的其他控制符: 1.%md:m代表这个整数位占用多少位,m是一个整数.实际数字不足的 ...
- oc语言学习之基础知识点介绍(二):类和对象的进一步介绍
一.类.对象在内存中的存储 /* 内存分区: 栈:局部变量 堆:程序员自己写代码申请开辟的 程序员自己维护,编译器现在帮我们自动优化了,它在合适的给我们加上了释放空间的语句,所以我们现在写的对象不会造 ...
- c语言学习之基础知识点介绍(十四):指针的进阶
一.指针的加.减法运算 /* 1.加法运算 1).可以跟整数进行加法运算,得到的还是一个地址 公式: 地址 + 1 = 地址 + 1 * 类型所占的字节数 地址 + n = 地址 + n * 类型所占 ...
- c语言学习之基础知识点介绍(十):数组
本节主要介绍数组. 一.数组 /* 数组:一个变量可以存n个变量. 语法:类型 数组名[长度(正整数)]; 例如:int score[5];//定义了一个int类型的数组,长度为5,可以保存5个数据. ...
- c语言学习之基础知识点介绍(二十):预处理指令
一.预处理指令的介绍 预处理命令:在编译之前触发的一系列操作(命令)就叫预处理命令. 特点:以#开头,不要加分号. #include: 文件包含指令 把指定文件的内容复制到相应的位置 #define: ...
- c语言学习之基础知识点介绍(十五):函数的指针
一.函数的指针的介绍 /* 函数指针: 函数的指针,本质上一个指针 指向函数的指针,就是一个函数指针. 回忆:我们写的源代码编译成二进制的指令集,一串交给CPU执行的指令 先存在内存里面,然后CPU读 ...
- c语言学习之基础知识点介绍(十二):结构体的介绍
一.结构体的介绍 /* 语法: struct 结构体名{ 成员列表; }; 切记切记有分号! 说明:成员列表就是指你要保存哪些类型的数据. 注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类 ...
- c语言学习之基础知识点介绍(十):内存空间模型、地址解释及指针变量
一.内存 /* 内存: 存在内存里的. 内存分了N多个小空间,每个小空间1个字节 每个小空间有它自己的地址.每个地址之间差1 int类型占用4个字节,等于占了4个空间(有4个地址),不需要记住4个地址 ...
随机推荐
- SQL Server触发器以及如何在SQL Server Manager中调试触发器
·只有inserted表有数据时,当前操作为insert:·inserted和deleted两张表都有数据时,当前操作为update:·只有deleted表有数据时,当前操作为delete. 1. C ...
- Oracle 12c创建用户时出现“ORA-65096: invalid common user or role name”的错误
这篇文章主要介绍CDB和PDB的基本管理,资料来源oracle官方. 基本概念: Multitenant Environment:多租户环境 CDB(Container Database):数据库容器 ...
- 纯CSS的颜色渐变效果
本例展示了一个纯css渐变的效果.其兼容IE6以上浏览器等各主流浏览器: 案例效果:查看演示 代码如下: css: *{margin:0;padding:0;} .linear{ width:100% ...
- synchronize学习
这个例子我们看到,java中将对象或者Class对象当做锁 package synchronized简单使用; public class Test7 extends Thread{ public st ...
- algorithm@ dijkstra algorithm & prim algorithm
#include<iostream> #include<cstdio> #include<cstring> #include<limits> #incl ...
- poj 3177 Redundant Paths【求最少添加多少条边可以使图变成双连通图】【缩点后求入度为1的点个数】
Redundant Paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11047 Accepted: 4725 ...
- Web Service学习文旦下载
Web Service的学习暂且告一段落,因为毕竟只是对它作简要了解,至于其原理什么并不打算涉及. 在这里我提供下我之前文档的整理版本: http://kuai.xunlei.com/d/YlzvAG ...
- mac下apache启动关闭操作
1.一般的命令如下: 2.但是这种方法在mac上有的时候不生效 3.根据上面的提示使用下面的方法,可以生效,mac上很多应用都可以采用这种方式启动.关闭应用 sudo launchctl load / ...
- Jquery JS 正确比较两个数字大小的方法
if(2 > 10) { alert("不正确!"); } 此比较不会是想要的结果:它相当于2 >1,把10的第一位取出来比较. ——————————————————— ...
- html图片滚动效果
分享一个手动控制图片左右滚动的代码 先说html部分,建立一个层,写出他的样式,层中在建立一个小一点的层用来存放需要滚动的图片,小层两边再建两个小层用来存放控制图片左右滚动的按钮.代码如下: 样式表: ...