美文网首页
变量与内存(基础知识)

变量与内存(基础知识)

作者: 我是一条池中鱼 | 来源:发表于2017-09-22 13:00 被阅读0次

资料:Python中的变量与内存理解


C语言中的基本数据类型

在32位、64位系统当中,唯一改变的是指针的长度;在32位系统当中是4个字节、64位则是8个字节。所谓的32位、64位,这个指的是寄存器的位宽。

32位的操作系统下每种类型所占内存

>int:4字节         >unsigned  int:4字节

>short:2字节         >unsigned short:2字节

>long:4字节       >unsigned long:4字节

>long  long:8字节          >unsigned  long  long :8字节

>char :1字节

>float:4字节

>double:8字节        >unsigned double:4字节

>long double:有的是8字节,有的是10字节,有的是12字节或16字节。规定long double的精度不少于double的精度,就像int和long int一样。关于具体的编译器的情况, 可以打印 sizeof(long double)得知。

>string:32字节

>所有类型的指针都是 4字节

>共有体(联合体)union:取其中占有字节数最大的数据类型所占有的字节数。

>函数:除了void型。其他都函数占有的字节数等于函数的返回类型所占有的字节数。与函数体内部无关。

如:float  fun(){ return 2;}

sizeof(fun())= 8

>结构体、类:内部各数据类型占用之和,注意边界对齐。如:

 struct fun1{

int a;   //4

double b;  //8

char c;     //1

};

sizeof(fun1)=24

truct fun2{

int a;   //4

char c;     //1

};

sizeof(fun2)=8

特殊:

structfun3{

string a;   //32

char b,c,d;     //3

};

sizeof(fun3)=36

整型的每一种都有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是有符号类型需要使用一个bit来表示数字的正负,比如16位系统中一个int能存储的数据的范围为–32768 ~ 32767(16位2进制的最高位作为符号位‘1’为负‘0’为正),而unsigned能存储的数据范围则是0~65535(这个最高位不用做符号位,所以是2的16次方,一共65536)。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int

64位系统下的long类型和pointer(指针)类型长度为64位

32位和64位的区别还涉及了内存的寻址方面,32位系统的最大寻址空间是2 的32次方= 4294967296(bit)= 4(GB)左右,而64位系统的最大寻址空间的寻址空间则达到了2的64次方= 4294967296(bit)的32次方=数值大于1亿GB。换而言之,就是说32位系统的处理器最大只支持到4G内存,而64位系统最大支持的内存高 达亿位数。

相关文章

  • 变量与内存(基础知识)

    资料:Python中的变量与内存理解 C语言中的基本数据类型: 在32位、64位系统当中,唯一改变的是指针的长度;...

  • JS变量

    概念变量 定义 变量是操作计算机内存的符号标记, 变量与内存 变量本身是有内存的,变量的内存只够存放: 基本数据类...

  • Java内存模型

    定义程序中各个变量的访问规则,在虚拟机中将变量存储到内存和从内存取出变量这样的底层细节。 主内存与工作内存主内存:...

  • JVM08 Java内存模型是如何定义的?

    Java内存模型即内存访问规则 主内存与工作内存 在JVM中将变量存储到内存和从内存中取出变量这样的底层细节。类似...

  • 识别反汇编

    全局变量与局部变量 全局变量直接采用内存地址,在内存中写入数据,以后使用时直接引用内存地址,程序完成前不清理内存。...

  • 内存泄漏

    一.java内存泄漏基础知识 1.java内存的分配策略 1)静态存储区 2)栈区:方法中的基本类型变量,对象的引...

  • iOS 内存管理进阶

    1. 基础知识 可执行文件的内存结构 .bss区,未初始化的全局变量和静态变量 .data区,初始化的全局变量和静...

  • Java内存模型与关键字Volatile的关系

    普通变量与JMM 对于普通变量,每个线程操作共享变量时,会将这个变量从主内存copy一份到自己的工作内存 当B线程...

  • 《深入理解Java虚拟机》学习笔记(九)(Java内存模型与线程

    Java内存模型与线程 Java内存模型 主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规...

  • Java内存模型

    主内存与工作内存   Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内...

网友评论

      本文标题:变量与内存(基础知识)

      本文链接:https://www.haomeiwen.com/subject/jixfextx.html