变量的 地址 存放 变量 00000000H 的内 存单 00000001H int a 变量的值(a=1) 变量名 局部变量a的存储示意图 注:变量的地址是二进制的,为了便于书写 而在这里写成对应的十六进制形式。 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 6 变量名 变 量 的 地址 存 放 变 量 的 内 存 单 元 00000000H 00000001H 1 变量的值(a=1) 局部变量a的存储示意图 注:变量的地址是二进制的,为了便于书写 而在这里写成对应的十六进制形式。 int a
要访问变量首先就要知道变量的地址,可是通 过数字形式的地址值访问变量,显然是不方便的 (正如使用URL网址、域名比I地址要方便): 不便于书写和记忆,而且数字本身没有 什么具体的字面意义。 需要了解硬件细节。比如当前哪些内存 空间是空闲的等等。 失去了高级语言容易使用、接近人类语言的优点。 解决的办法: C语言提供了变量名,程序员通过变量名来访问 变量 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 7 要访问变量首先就要知道变量的地址,可是通 过数字形式的地址值访问变量,显然是不方便的 (正如使用URL网址、域名比IP地址要方便): ➢不便于书写和记忆,而且数字本身没有 什么具体的字面意义。 ➢需要了解硬件细节。比如当前哪些内存 空间是空闲的等等。 失去了高级语言容易使用、接近人类语言的优点。 解决的办法: C语言提供了变量名,程序员通过变量名来访问 变量
7.1,2指针 “指针就是地址” ●地址值(也就是内存单元的编址)。 ●是什么类型的数据的地址。(这就存在 着一个跨度也就是存储空间大小的问题)。 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 8 “指针就是地址”!!! ⚫地址值(也就是内存单元的编址)。 ⚫是什么类型的数据的地址。(这就存在 着一个跨度也就是存储空间大小的问题)。 7.1.2 指针
7.1.3指针其名 明白指针就是地址,这一点十分重要。 多数情况下,这个地址是指内存中一个变量 的起始位置。 如果一个变量包含了另一个变量的地址,那 么第1个变量就是个指针变量,而且说它是“指向” 第2个变量的,“指针”由此而得其名。 例如,如果在地址为1000的变量指向地址为 1004的变量,那么也就是说地址为1000的这个变 量的值是1004。 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 9 明白指针就是地址,这一点十分重要。 多数情况下,这个地址是指内存中一个变量 的起始位置。 如果一个变量包含了另一个变量的地址,那 么第1个变量就是个指针变量,而且说它是“指向” 第2个变量的,“指针”由此而得其名。 例如,如果在地址为1000的变量指向地址为 1004的变量,那么也就是说地址为1000的这个变 量的值是1004。 7.1.3 指针其名
7.1指针的基本概念 为什么要表达为“指向”呢?下一节中将会 看到如果变量p的值是变量a的地址,则可以利用 变量p来访问和操作变量a(其实这是很自然的事 情,有了某变量的地址当然就可以访问该变量)。 所以这样的变量p和a之间是有某种联系的,这种 联系就被表达为“指向”。 图7-3解释了这一点,它仅仅用来对地址进 行偏移。 10 及 XIAMEN UNIVERSITY OF TECHNOLOGY 2008 20: 52
2008 20:52 10 为什么要表达为“指向”呢?下一节中将会 看到如果变量p的值是变量a的地址,则可以利用 变量p来访问和操作变量a(其实这是很自然的事 情,有了某变量的地址当然就可以访问该变量)。 所以这样的变量p和a之间是有某种联系的,这种 联系就被表达为“指向”。 图7-3解释了这一点,它仅仅用来对地址进 行偏移。 7.1 指针的基本概念