1 / 5
文档名称:

C语言中指针问题解析.doc

格式:doc   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言中指针问题解析.doc

上传人:zbggqyk171 2015/9/15 文件大小:0 KB

下载得到文件列表

C语言中指针问题解析.doc

相关文档

文档介绍

文档介绍:C语言中指针问题解析
摘要:文章总结了C语言中变量的访问方式,从而引出指针概念;接着通过图例对指针的几种常见形式做了介绍,最后通过几个实例将指针的一些具体用法做了探讨,旨在帮助读者提高对指针的认识。
关键词: 变量指针指针变量间接访问
指针在C语言里应用极为广泛,是C语言的灵魂。它是C语言中广泛使用的一种数据类型,运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构;能方便地使用数组和字符串;函数调用时,使用指针可以实现参数的批量传递。并能象汇编语言一样处理内存地址,从而编出精炼而高效的程序。当然,由于指针属于较复杂的数据类型,也是C语言中较难掌握的,需要读者好好掌握指针的概念和应用。
一、变量的访问方式与指针
我们知道,在程序中定义一个变量a, C编译系统就会根据a变量的类型,为其分配一定字节数的内存单元。在程序中,一般是通过变量名对内存单元进行存取操作的。但程序经过编译后,已经将变量名转换为变量的地址,对变量a的访问是通过地址(3000)进行的。这种按变量的地址直接对变量的值进行存取的方法称为“直接访问”方式。见图1所示。我们还可以按另一种“间接访问”的方式访问变量,例如:将变量i的地址(3000)放入另外一个变量j(3002)中。要访问变量i时,我们不能直接访问3000的存储单元,而是通过3002单元间接访问它,这时3002单元中放的是3000,也就是变量i的地址,我们可以通过这个地址找到变量i。这就是
“间接访问”。见图2所示。
通过图2可知,内存单元3000和3002存储的内容是不一样的,3000存储的是变量i的内容,3002存储的是变量i的地址。我们称内存单元3000为变量i的指针,而称与内存单元3002有对应关系的变量j为指针变量。
二、指针的几种常见形式
指针变量和普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值,指针在说明时直接赋予初值称为指针的初始化,当然也可以在程序中赋值。这里要提醒一下读者,由于变量都有自己的作用域,不同函数中定义的变量的作用域是不一样的,使用指针后,指针变量中存放的是指向变量的地址,使得访问变量变得简单,但是要注意指针的指向,指针值的改变,防止出现系统混乱,甚至死机。下面列出几种指针形式,供大家参考学****br/> 1、基本形式
本种形式是这样:定义了整型变量i,指向整型变量的指针变量p,取变量i的地址(“&”为取地址运算符)给指针变量p赋初值。具体关系见图3所示。这里要注意,*号出现在定义语句时,*用于表明变量为指针类型;当*出现在其他程序语句中时,*号为“间接运算”符,代表间接引用指针变量所指向的对象。
2、二级指针
3、指针数组
本种形式中*p[4]为一个指针数组,并对该数组第一个元素进行了初始化。因为根据运算符的优先级别,数组下标运算符高于取值运算符,所以p先于数组下标运算符结合,即p为数组,然后再与取值运算符结合,表明该数组的每一个元素都是一个指针变量。也就是说该数组是一个由四个指针变量组成的数组。具体见图5所示。
4、数组指针
本种形式中(*p)[4]为一个数组指针,并对该指针进行了初始化。因为根据运算符的优先级别,括号的级别高于数组下标运算符,所以p先于*结合,说明p为指针,然后再与数组下标运算符结合,表明p是一个指