C语言的内存与地址及相关一些基本概念

   日期:2020-11-01     浏览:79    评论:0    
核心提示:1231231313123

C语言的内存与地址及相关一些基本概念

    • 32位操作系统为什么有4G内存?
    • 内存是什么
    • 堆是什么
    • 地址的本质
    • 内存与地址的关系
    • 内存的分布(从小到大)
    • 换算关系与单位
    • c语言是一种弱类型语言
    • 变量的本质
    • 指针的本质
    • 数组声明的内存排序

32位操作系统为什么有4G内存?

  • 32位操作系统安装在32位电脑中,32位电脑的CPU是32位,即地址总线是32根,CPU处理程序,发出指令给到地址总线(地址总线的作用是传递地址到寻址空间——寻找地址)因为地址总线有32根,所以可以传递出2的32次方中结果,寻址空间会根据这个结果在内存中寻找对应的编号(在开机的时候操作系统就会为内存中的每一个字节进行编号,这个标号即为地址),一个编号对应的是一个字节所以可以寻找到2的32此方个字节(即4G),所以该电脑只能寻找到4G内存,所以32位系统只“需要”管理4G内存,所以32位操作系统在开机的时候只会给4G内存编号,即通俗表达“32位操作系统只能管理4G内存”

内存是什么

  • 计算机"临时"储存"数据"(变量)的地方—程序执行的时候变量存储在内存中,程序执行完毕,内存释放
  • 硬盘:计算机"永久"储存"数据"(文件)的地方
  • 内存是由操作系统管理的

堆是什么

  • 自由分配的空间,自由申请的空间是堆空间

地址的本质

  • 如果是32位的电脑,那么地址是32位的二进制数

内存与地址的关系

  • 一个字节的内存会被分配一个地址

内存的分布(从小到大)

  • 代码段:存储代码块(函数的声明)
  • 数据段:常量,全局变量,静态变量
  • 堆:自由分配的空间
  • 栈:存储局部变量的地方
    – 一个函数与一个函数分配在不同的栈中
    – 一个函数再将要执行的时候,系统会判断出该函数将会占用多少空间,然后分配出来这么多空间作为一个栈
    – 栈的地址是从大地址到小地址分配的,
    – 一个栈中的数据的分配是从小地址到大地址分配的
    – 栈-----先进后出 后进先出
  • 系统内存:系统运行占用的空间

换算关系与单位

  • 内存的最小存储单位是"字节"
  • 1字节 = 8个二进制位
  • 1K = 1024字节;1M = 1024K;1G = 1024M
  • 1个16进制位 = 4个2进制位

c语言是一种弱类型语言

  • 如何判别:数据存储到内存当中就可以看出他的数据类型,是强类型。例:有数据类型限制的大部分是静态声明,否则是
    反之,看不出是弱类型。例:ASCLL A 和65 都是65,分辨不出是否一样。JS是强类型语言。

变量的本质

  • 变量名只是一个代号,地址。
  • 变量的本质就是内存 。
  • 数据写到cpu哪个位置
  • 一个字节8个二进制数1
  • 一个字节8位。32位就是48=32,64位就是88=64。
  • 指针就是一种数据类型,专门为地址产生的。
  • 除了代码编译后存在代码段以外 ,当前调用那个函数,当前调用的函数运行到多少行,并且这个函数中有哪些变量,这些变量的值是什么, 这个记录的地方在哪呢?存在栈。

指针的本质

  • C语言中所有的变量都有类型
  • int类型就保存整数
  • doublue类型就保存的双精度的浮点数
  • 指针保存的是内存地址

数组声明的内存排序

  • C语言声明数组要声明数组的长度
  • 在函数里声明在栈内存里,函数执行的时候结果也在栈内存里
  • 如果我们在使用指针的时候,如果我们在程序里面,使用到了一个我们没有声明过的变量所指向的内存空间的话,那我们会得到随机的值。C语言不做指针的安全检查,只要给了一个地址,就操作一个地址,把值取出来
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服