第 14 卷第4 期
2002 年 12 月
湖南轻工业高等专科学校学报
Journal of Hunan Light Industry College
Vol . 14 No . 4
Dec .2002
【文章编号] 1009一3702(2002)04 一0025 一03
C 语 言 指 针 与 数 组 的难 点 分 析
杨鼎强’,乐光学2
( t .长沙电力学院 侯家塘校lK计算机系,湖南 长沙 410015;2.怀化学院 计算机系,湖南 怀化 418008)
【摘要I 文章探讨了c 语言程序设计中指针与数组的关系,通过对相应的程序设计方法的分析认为:若是顺序
访问数组,指针访问最快;若是随机访问数组,使用下标更好
【关键词] C程序设计 ;指针 ;数组
〔中图分类号」TP311.1 【文献标识码】A
1 指针、数组的指针及指向数组的指
针
当定义了一个变量后,就对应有三个方面的内
容 :变量名、变量存储空间的地址和变量中存放的数
值。
指针即是地址。数组的指针是指整个数组的起
始地址,也是数组中第一个元素的地址,即数组名。
如有以下定义 :
int a[101,
则数组的指针是 &a[0] ,且 a 与 &4 01等价。
指向数组的指针指的是能够指向数组中任一元
素的指针。
若程序中有以 卜定义 :
int a[10] ,* P;
则可以使用 1〕指向整型数组 a 中间的任一个元
素。
若有p= &。[ ],
则 p 指向了。〔〕中第 i 个(下标为 i 的)元素。
2 指针与一维数组
C语言规定: 如果指针变量 pti 已指向数组中的
一个元素,则 pti i 1指向同一数组中的下一个元素,
见图 工。例如,有以 下定义 :
int dates[4],二pti;
则 dates + 2 = &date耗2] ;
‘(dates +2) - dates[2]
进一步推]’一,若有
pti= & dates[n] ;
那pti + i 就指向dates[n+ i] ;
二(pli +i)与dates[n+ i]等价;
pti一i则指向dates[n 一il ;
* (pti一1)与dates[n一i]等价;
在程序设计中,数组既可以用下标访问,也可以
用指针来访间。以下两个函数均为计算整型数组中
各元素值的总和
指针以2个字节为单位增加,因为叫是 int类型的
厂一寸 一几
pttV
5 60 14 5 6 0 15
pti+l pti+2 pd+3
V 口 V
56016 56017 560 18 56019 56020 56021- 机器地址赢
dates101 dates[l l dstes[21
图 I 指针与数组加法
函数 1
int array_sum( int
{
array, int n )
int sum = 0 , * p ;
int * array.end 二array 十u
(or(p= array;p< array_end ;p+ 十)
sum 十= * P ;
return( sum) ;
函数 2
[收稿日期12002 一08 29
!作者简介1杨;pil强( t966 ) .女,湖南宁乡人,长沙电力学院副教授,从事计算机专业的教学和研究工作
A 南轻工业高等专科学校学报 2002 年 12 月
int array_sum(int array,int n)
{
int sum = 0 ;
in t i ;
该二维数组可以简化为一个指针变量p 指向一
个 一维数组 见图L
for( i= O; i< n ; i +