变量
2016-07-13 23:11
190 查看
C语言笔记2-----变量
看到变量的时候,有点熟悉的感觉,我想起我在学函数的时候,变量就是一个未知数。而在C语言中变量是指,其值在其作用域内可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储空间。变量在使用前必须要定义,每个变量都应该有自己的地址,上述是对于什么是变量的解释。
变量的三大特点:
变量的数据类型:主要说明变量占用内存空间的大小;
变量的作用域:变量有效的使范围;
变量存储的类别:变量在内存中的存储的方式,不同的存储方式,影响变量在内存中的生存方式;
举例:int num = 5;什么意思?
初步的理解:定义了一个int的类型的变量,变量的名字的是num,并赋值5;
每个程序打开后,内存中有一个进程。而对于进程来说,操作系统给每个进程都分配了4G的内存的虚拟的空间。有人会说那么的进程那么需要多少内存的空间呢,其实真是的内存分配了2M(举个例子),而真正的工作的时候,由MMU内存管理来完成管理,这主要是由于内存资源的稀缺,那么平时我们都用过指针,打印出来的地址其实虚拟地址的空间。
那么每个进程有4G的空间,这空间是怎么分配的呢!
分为:内核段,栈空间段,堆空间段,数据段,代码段
内核段:应该是内核所运行的空间,并拥有所有的硬件的权限;
栈空间段:主要放局部的变量,函数的形参,自动变量。先进后出的原则(先定义的后释放空间,有点像C++的构造与析构的顺序),管理的权限:系统。变量的空间是自动释放的。
堆空间段:主要由 malloc ralloc calloc 来分配空间的,管理的权限:用户。变量的空间的释放需要用户手动的释放,(free)
数据段:数据段由bss,rodata,data,
Bss:主要保存没初始化全局变量;
Rodata:常量
Data:全局变量,static修饰的变量;(程序结束后释放)
我们再看int num = 5;
我们应该分为num是全局变量还是局部变量;
全局变量:在内存空间里面的数据段里面的data申请4个字节的空间的并给这片空间取名为num
并为这片空间赋值为5;
局部变量:在内存空间的栈空间里面申请4个字节的空间,并取名为num,为这片空间赋值5;
注:局部变量,如果没有初始化,变量是随机数,全局变量自己本身初始化为0;
但是养成良好的习惯,尽量变量进行初始化。
看到变量的时候,有点熟悉的感觉,我想起我在学函数的时候,变量就是一个未知数。而在C语言中变量是指,其值在其作用域内可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储空间。变量在使用前必须要定义,每个变量都应该有自己的地址,上述是对于什么是变量的解释。
变量的三大特点:
变量的数据类型:主要说明变量占用内存空间的大小;
变量的作用域:变量有效的使范围;
变量存储的类别:变量在内存中的存储的方式,不同的存储方式,影响变量在内存中的生存方式;
举例:int num = 5;什么意思?
初步的理解:定义了一个int的类型的变量,变量的名字的是num,并赋值5;
每个程序打开后,内存中有一个进程。而对于进程来说,操作系统给每个进程都分配了4G的内存的虚拟的空间。有人会说那么的进程那么需要多少内存的空间呢,其实真是的内存分配了2M(举个例子),而真正的工作的时候,由MMU内存管理来完成管理,这主要是由于内存资源的稀缺,那么平时我们都用过指针,打印出来的地址其实虚拟地址的空间。
那么每个进程有4G的空间,这空间是怎么分配的呢!
分为:内核段,栈空间段,堆空间段,数据段,代码段
内核段:应该是内核所运行的空间,并拥有所有的硬件的权限;
栈空间段:主要放局部的变量,函数的形参,自动变量。先进后出的原则(先定义的后释放空间,有点像C++的构造与析构的顺序),管理的权限:系统。变量的空间是自动释放的。
堆空间段:主要由 malloc ralloc calloc 来分配空间的,管理的权限:用户。变量的空间的释放需要用户手动的释放,(free)
数据段:数据段由bss,rodata,data,
Bss:主要保存没初始化全局变量;
Rodata:常量
Data:全局变量,static修饰的变量;(程序结束后释放)
我们再看int num = 5;
我们应该分为num是全局变量还是局部变量;
全局变量:在内存空间里面的数据段里面的data申请4个字节的空间的并给这片空间取名为num
并为这片空间赋值为5;
局部变量:在内存空间的栈空间里面申请4个字节的空间,并取名为num,为这片空间赋值5;
注:局部变量,如果没有初始化,变量是随机数,全局变量自己本身初始化为0;
但是养成良好的习惯,尽量变量进行初始化。
相关文章推荐
- Linux C函数参考手册(PDF版)
- C# partial关键字说明
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- C#用链式方法表达循环嵌套
- C#中的委托数据类型简介
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- 基于C#技术实现身份证识别功能
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- C和指针小结(推荐)
- C++中explict关键字用法
- C/C++数据对齐详细解析
- 利用C语言来求最大连续子序列乘积的方法
- 字符串的组合算法问题的C语言实现攻略
- C 语言基础教程(我的C之旅开始了)[三]
- 学习C和C++的9点经验总结
- C++中的extern “C”用法详解