您的位置:首页 > 其它

变量

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