Chinaunix首页 | 论坛 | 博客
  • 博客访问: 215423
  • 博文数量: 76
  • 博客积分: 2231
  • 博客等级: 大尉
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-27 09:15
文章分类

全部博文(76)

文章存档

2011年(76)

分类: C/C++

2011-11-25 17:39:53


指针
计算机的内存由数以亿万计的位(bit)组成,每个位可以容纳0或1。由于一个位表示的值的范围太有限,所有单独的用处不大,通常许多位合成一组
作为一个单位,这样就可以存储范围较大的值。
100 101 102 103 104 105 106 107

内存位置
每一个被成为字节(byte),每个字节包含存储一个字符所需要的位数。
现代的计算机上,每个字节包含8个位,可以存储无符号值0-255 ,或有符号值-128至127,每个字节通过地址来标识。
为了存储更大的值,我们把两个或更多个字节和在一起作为一个更大的内存单位。许多机器以字为单位存储整数,每个字
一般由2个或者4个字节组成。
100               104
四个字节的字

注意,尽管一个字包含了4个字节,它仍然只有一个地址,至于它的地址的它最右边的那个字节的位置还是最左边的那个字节的位置,不同的机器有不同的规定。
另一个需要注意的硬件事项是边界对齐(boundary alignment)。在要求边界对齐的机器上,整型值存储的起始位置只能是某些特定的字节,通常是2或4的倍数。
1.内存的每个位置由一个独一无二的地址标识;
2.内存的每个位置都包含一个值。

地址与内容
100        104        108        112        116
112        -1        107534    100        108
这里显示了5个整数,每个都位于自己的字中。如果你记住了一个值的存储地址,你以后可以根据这个地址取得这个值。
但是,要记住这些地址实在是太笨拙了,所有高级语言所提供的特性之一就是通过名字而不是地址来访问内存的位置。使用名字代替地址。
a        b        c        d        e    
112        -1        107534    100        108
当然,这些名字就是我们所称的变量。有一点非常重要,名字与内存位置之间的关联不是硬件所提供,它是由编译器为我们实现。这些变量
给了我们一种方便的方法记住地址--硬件仍然是提供地址访问内存位置。

值和类型
int       a = 112, b = -1;
float    c = 3.14;
int      *d = &a;
float   *e = &c;

a        b        c        d        e    
112        -1        3.14         100        108
阅读(1426) | 评论(0) | 转发(0) |
0

上一篇:作用域与存储类型

下一篇:指针变量

给主人留下些什么吧!~~