普陀大型网站建设,怎么做贝店式的网站,企业解决方案除了思爱普,家装公司排名前201、内存和地址
计算机的内存是由数以亿万计的位#xff08;bit#xff09;组成#xff0c;每一个位可以容纳值0、1值。由于一个位所能表示的值的范围太有限#xff0c;所以单独的位用处不大。通常许多为合成一组作为一个单位#xff0c;这样就可以存储范围较大的值。下图…1、内存和地址
计算机的内存是由数以亿万计的位bit组成每一个位可以容纳值0、1值。由于一个位所能表示的值的范围太有限所以单独的位用处不大。通常许多为合成一组作为一个单位这样就可以存储范围较大的值。下图展示了现实机器中的一些内存位置这些位置的每一个都被称为 字节byte 每个字节都包含了存储一个字符所需要的位数。在现在的许多机器上 每一个字节包含8个位 可以存储无符号值0-255或者有符号值-128--127。 之后为了存储更大的值我们把两个或更多的字节合在一起作为一个更大的内存单位。例如机器以字为单位存储整数每一个字一般有2至4个字节组成。下面这个图所表示的内存位置以4个字节来表示。 由于它们包含了更多的位每一个字可以容纳无符号整数的范围是从0-4294967295(或者是 2 32 − 1 2^{32}-1 232−1或者是有符号的范围-2147483648至2147483647或者说是 − 2 31 -2^{31} −231至 2 31 − 1 2^{31}-1 231−1。注意地址是最左边那个字节的位置还是最右边那个字节的位置与计算机体系结构有关。还需要注意的硬件事项是边界对齐在要求边界对齐的机器上整型值存储的起始位置只能是某些特定的字节通常是2或4的倍数。地址与内容 这里有一个例子上边的数字是内存地址下边的是对应的内容。 如果你记得这几个数的地址你就可以根据地址来用这些值但是要记住地址太难了地址有很多很复杂所以不切实际。所以可以通过名字而不是地址来访问内存的位置。如下图所示 有一点很重要名字与内存位置之间的关联并不是硬件提供的它是由编译器实现的。所以这些变量给了我们一种更方便的方法记住地址————硬件仍然通过地址访问内存位置。
2、值和类型 现在让我们来看一下存储于这些位置的值。int a 112,b -1;
float c 3.14; //1078523331解释成浮点数为3.14
int *d a; //变量a的地址是100所以d为100
float *e c; //变量c的地址是108所以e为108c声明的浮点型变量但是在图中却是一个整数为什么 原因该变量包含了一系列内容为0或1的位他们可以解释为整数也可以被解释为浮点数这取决于他们被使用的方式如果使用的是整型算术指令这个值就解释为整数如果使用的浮点数类型的指令就解释为浮点数。这个事实引出了一个重要的结论不能简单的通过检查一个值的位来判断他的类型。
3、指针变量的内容 需要清楚以下变量对应的值 int *d a;
float *e c; /*通过上面的定义得到以下值*/
d 112 // 变量d的地址d 100 // 变量d的值、变量a的地址
*d 112 // 地址d中的内容、变量a的值e 116// 变量e的地址e 108// 变量e的值、变量c的地址
*e 3.14// 地址e中的内容、变量e的值4、间接访问操作符 通过一个指针访问它所指向的地址的过程成为间接访问或解引用指针。这个用于执行间接访问的操作符是单目操作符*。下面是间接访问操作符的一些示例。 可通过以下的箭头记法进行描述
5、未初始化和非法的指针