首页 百科知识 地址和指针是什么?

地址和指针是什么?

时间:2022-09-22 百科知识 版权反馈
【摘要】:地址一般用二维方式来表示,即段地址和偏移地址。在C语言程序中,对数据的存取是通过地址进行的,要存取一个数据,必须先知道这个数据的存放地址,再找到存放这个数据的具体存储空间,对该数据进行存取操作。在C语言中,指针是地址的“雅称”,可以说,指针就是地址值。一个变量的地址称为该变量的指针,它指向以它为地址的内存单元,通过变量的指针能够找到该变量。

7.1.2 地址指针

1.地址

地址是用来存放各种信息的内存单元在机器内所处的位置,通常以字节为单位进行编号。例如,一般微机上使用的C语言系统为整型变量分配2个字节的存储空间,为实型变量分配4个字节的存储空间,为字符型变量分配1个字节的存储空间。计算机内存区的每一个内存单元就是1个字节的存储空间,这些内存单元都有一个固定的编号,这个编号就是“地址”,它相当宾馆中的房间号。在地址所标志的内存单元中存放数据,相当于在宾馆中房间居住的旅客一样。地址一般用二维方式来表示,即段地址和偏移地址。

计算机中,存放在内存单元中的数据是可变的,但内存单元的地址是固定不变的,即每一个内存单元所处的位置都是固定的。就像宾馆房间所处的位置是不变的,而住在该房间的旅客是变化的一样。所以说,任何一个内存单元的地址值都是一个常量,而且是整型常量。

在C语言程序中,对数据的存取是通过地址进行的,要存取一个数据,必须先知道这个数据的存放地址,再找到存放这个数据的具体存储空间,对该数据进行存取操作。程序中,通常通过变量名来对存储空间的数据进行存取操作,其实程序经过编译后已经将变量名转换为变量的地址,对变量值的存取操作实际上就是对该变量所代表的存储空间进行数据存取操作。

C语言中,对某个变量值存取的方式有两种:

(1)直接访问——直接利用变量的地址进行存取。

(2)间接访问——通过另一变量访问该变量的值,在程序中可以定义一种特殊的变量(称为指针变量),用来存放其他变量的地址。

这两种访问方式之间的关系,可以用某人甲要找某人乙来类比。

一种情况是,甲知道乙在何处,直接去找他,这是直接访问;另一种情况是,甲不知道乙在哪儿,但丙知道乙在哪儿,此时甲可以这么做:先找丙,从丙处获得乙的去向,然后再找乙,这就是间接访问。

一般而言,C语言中的各数据类型的地址引用方式如下:

(1)基本类型变量:在变量名前加地址运算符&,如&a,表示变量a的地址。

(2)数组:C语言程序中数组名代表该数组的地址。数组的地址就是该数组中第一个元素的地址,也称为数组的首地址。如int a[5];a是数组名,代表了这个数组的地址,也代表了第一个元素的地址,即a和&a[0]的含义是相同的。

(3)函数:C语言程序中函数名代表了该函数的入口地址。

(4)字符串常量:字符串常量本身就代表该常量的地址。

2.指针

在C语言中,指针是地址的“雅称”,可以说,指针就是地址值。一个变量的地址称为该变量的指针,它指向以它为地址的内存单元,通过变量的指针能够找到该变量。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈