c语言分析指针与数组的关系,C语言中指针与数组结合的分析与讨论.PDF

C语言中指针与数组结合的分析与讨论.PDF

第2l卷第2期 三 明 高 等 专 科 学 校 学 报 20O4年6月

V0lI.2lNo.2 JOURNALOFSANMINGCOlJF.~GE Jun.2004

C语言中指针与数组结合的分析与讨论

黄 建 茂

(三明高等专科学校计算机科学系,福建三明 365004)

摘 要:首先阐述了地址、数组与指针的概念,随后通过分析推理的方法使指针与数组结合应

用这一复杂难以掌握的问题得以轻松解决。

关键词:c语言;地址;数组;指针;级别;等量替换

中图分类号:TP312 文献标识码:A 文章编号:1671一l343(2004)02一OO66—04

C语言中指针与数组这两个概念之间的联系是密不可分的,以至于如果不能理解一个概

念,就无法彻底理解另一个概念。应用数组能简化程序中数据量的处理,而指针是C语言最

具特色的语言成分,它是C语言的精华,可同时又是C语言中最复杂、最难掌握的语言点。只

有正确地掌握了指针的概念,正确而灵活地运用指针,才能方便有效的使用数组、使用字符串,

才能有效的表示复杂的数据结构、动态的分配内存,直接处理内存地址,使程序简洁、紧凑、高

效。可以说,若没有掌握指针,就没有真正掌握C语言。

!地址

C程序中每一个实体,如变量、数组和函数等,都要在内存中占有一个可标识的存储区域。

每一个存储区由若干个字节组成,在内存中每一个字节都有一个编号,这就是“地址”,而一个

存储区域的地“址”指的是该存储区域第一个字节的地址。

2 数组

数组是同类型数据的有序集合,即数组由若干数组元素组成,其中所有元素都属于同一个

数据类型,且数组的大小必须在编译期(即定义一个数组时)就作为一个常数确定下来。

在C语言中只有一维数组,而数组中的元素可是任何类型的对象,当然也可是另外一个

数组(即数组中的每个元素又是一个一维数组),这样,我们就可以仿“真”出一个多维数组了。

在C语言中,数组一旦定义,编译程序就会为每个数组安排一段连续的存储单元存放数

组的各个元素。数组名就是这段存储单元的首地址。对一维数组来说,各个元素顺序存放,对

多维数组来说,先按行的顺序,然后按列的顺序依次存放各个元素。

3 指针

指针是内存中的一个地址,是存放地址值的变量或常量,是地址更形象化的一个词语。依

此可把指针分为:指针变量和指针常量。指针变量是用于存放其他某一类型变量的地址的变

收稿日期:20∞.10-17

作者简介:黄建茂(1976一),男,福建莆田人,三明高等专科学校计算机科学系助理实验师。

56 ’

t

量,好比生活中的路标,当您看到路标时,就知道具体的目标位置应怎么走了。而指针常量是

指所引用的对象的地址不能改变的指针,如数组名。因此,我们可以认为指针就是地址。而指

针变量也就是地址变量,指针常量也就是地址常量。

4 指针的级与数组维数间的关系

指针的级与数组地址的级对应,即二级指针只能指向二级地址,一级指针只能指向一级地

址。若地址级别与指针级别不一致,则将导致类型不匹配的问题。C语言规定一维数组的首

地址是一级地址,二维数组的首地址是二级地址。

5 指针与数组的结合 r

指针这一概念在c语言中本身就是最复杂、最难掌握的知识点,而指针与数组结合在一起,就

使它们之间的关系更为复杂、更难掌握了,往往使学习及应用C语言的人感到眼花缭乱。以

下我们就通过分析推理的方法,来揭开C语言中最为“晦暗不明”的部分。

5.1指针与一维数组

首先,我们定义如下一维数组:

inta[5]={1,3,5,7,9};

c语言规定,数组名a代表数组的首地址,也就是数组中第一个元素的地址&a[O],则a等

价于e~a[O],这样可推理出a+1等价于&a[1]、a+2等价于e~a[2]、a+3等价于&a[3]、a+4等

价于&a[4]。通过各元素的地址表示方式对应地可推理出各元素的值的表示方式,其方法只

要在各元素地址的整体表示方式前简单地加上地址访问运算符 “*”,即可得到各元素值的表

示方式,推理结果如图1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值