对变量的访问实际上要转换为对内存地址的访问。C语言中对变量的访问有两种形式,直接访问方式和间接访问方式。
以下面这个程序为例,介绍这两种访问方式:
main()
{
int x;
scanf("%d",&x);
printf("%d",x);
}
(1)直接访问:直接利用变量名检索得到变量的地址,对变量进行存取。
上例中scanf("%du,&x)的执行过程是这样的:用变量名x去检索内存分配表,查找变量x所在的内存地址(假设为4000 )。找到后,将从键盘上输入的值(如20 )送入到变量x的起始地址4000中。此时,变置x在内存中的地址和值如图所示。
(2)间接访问:通过另一变量访问该变量的值。
间接访问一个变量可以描述为这样一个过程:李四想去张三的家里找张三,但他不知道张三家住在哪里。不过王五知道,李四可以打电话给王五,得到张三家的地址后,再去张三家找到张三。
再比如,张三告诉李四,请你从我的第一个抽屉中找一份资料,但是要打开第一个抽屉,必须从第二个抽屉中找到钥匙。
这两个例子都是表明这样一种情况:一个变量p中存储着另外一个变量x的地址,要访问变量x,必须先访问变量P。
C语言规定,在程序中可以定义一种特殊的变量(称为指针变量),用来存放其他变量的地址。
例如上例中,就可以定义一个指针变量p存储变量x的地址,p与x的关系如图所示。
3000 | 4000 | 变量X | 20 | |
p | X | i | ||
4000 | 20 | |||
4000 |
从图中可以看出,变量x的地址为4000, x中的值为20;指针变量p的地址为3000, p指向X。也就是说,指针变量p的内存单元中存储着变量x的地址。即指针变量p的值为x的地址(4000 )。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>