- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针
" f. z& y9 j" p: u e9 i如: int a[10][10],*p=a;( [, V# I8 a w3 a3 S* w# R: _* }
然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
. K' O) o! m. x+ T" l1 P< >0 w4 \" |+ v4 Y/ f4 [
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以4 P( e' _% o9 z: \4 |- d) F7 @% ~
pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
2 n+ A' H7 M; | r) }" w* X大家来各自己发表意见。
4 W- o1 `9 H- T) U- ~本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>$ X7 K/ E g9 a/ X2 l! A3 [
' b. b$ H# l+ q% N< >下面这个程序是正确的:</P> i5 u3 q0 H1 K/ {5 B% e/ a+ m
< >main()) J% ?6 r- h K4 d
{ int a[10][10],*pa=a,i,j,m;
% K9 F2 O1 Q2 M, `9 I9 @- p for(i=0,m=0;i<10;i++)( _6 l/ h+ ^0 I
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
) B4 E7 J1 K% D* y } </P>
Q, m2 U2 l/ W/ T# P+ e$ V( ~< > ! I @4 P/ V- s# k
1 2 3 4 5 6 7 8 9 10
/ Q0 l& v4 c# Z, I2 [2 n2 m 11 12 13 14 15 16 17 18 19 20
U9 X1 R* \% a4 T7 F! i 21 22 23 24 25 26 27 28 29 30* |' k) P: K' u) Y9 n
31 32 33 34 35 36 37 38 39 40( @% u0 s, \3 h- R8 y
41 42 43 44 45 46 47 48 49 50* X9 v# M: \/ Q8 [
51 52 53 54 55 56 57 58 59 607 m. [' o1 e' P# @; g+ z
61 62 63 64 65 66 67 68 69 70! J+ I3 h- S+ ^2 N! h! Q
71 72 73 74 75 76 77 78 79 80" U7 V8 u0 U" [7 B
81 82 83 84 85 86 87 88 89 90
# i! k# y9 _6 b8 j% G. H 91 92 93 94 95 96 97 98 99 100* e& Y2 b3 C. J6 W0 y6 I
; {4 `# A- c& q9 P; g
这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>. `" W+ X( c: ^- [
< >, X N E& z7 y% `- _
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。: w% T! E4 z# d
main()
* H9 ~" Z( e% A. O& ?& z; b' N{ int a[10][10],*p=a,i,j,n,m;/ y6 G, {$ c; W+ I: r
printf("%d\n",p-a);
! } i! M9 M$ c: j& u" r/ b) E for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);' G/ Q! ` \1 d4 T. ]
for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);
* r9 v* ?' Z7 W, Z1 i8 ]4 ?4 G}</P>
2 r( L5 y0 {4 C1 A
' v* d% R; _) b# W+ W& n g[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|