- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针. P: {' d3 f1 z; K, |* X) P
如: int a[10][10],*p=a;
8 z. E4 X3 ^" b( x/ u然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>/ ~: R" b, c5 j ?; f2 m) D' v, o
< >
% R) C& [. @# z我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以+ ]/ G4 p& a# P2 }" U( J8 J# w
pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请" A0 X* J3 l$ p
大家来各自己发表意见。- S+ a; |, \+ v: Y2 l
本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
! C: @! Y+ ~$ ?) a# [ E! b M# [* c
< >下面这个程序是正确的:</P>
$ M+ z6 U8 V: e- y" T; c< >main()! P5 o2 ?- N3 E5 N4 o( X
{ int a[10][10],*pa=a,i,j,m;8 y8 W/ F7 f( r! a
for(i=0,m=0;i<10;i++)
$ S! v T' d' R6 ?, e for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}; `) r$ s1 @; l& M- M1 s) [9 w
} </P>
' g5 w) ^9 w; Z) C) _< > / c, }. V8 x$ I! j
1 2 3 4 5 6 7 8 9 10
" Z9 H8 g( E4 f- l( k9 B 11 12 13 14 15 16 17 18 19 20
3 c0 E* j" ~- Q; ` 21 22 23 24 25 26 27 28 29 30. g2 g' j% k1 S6 Y. x1 y
31 32 33 34 35 36 37 38 39 40* I& C3 K k9 Y4 v0 V
41 42 43 44 45 46 47 48 49 505 c) \+ f" n% \* \! s4 B
51 52 53 54 55 56 57 58 59 60
+ S! E5 P# c4 }- |+ m" O 61 62 63 64 65 66 67 68 69 70
4 ]( G5 ~2 z2 d; `& c# N& t 71 72 73 74 75 76 77 78 79 80. \4 _1 S) R( U: K
81 82 83 84 85 86 87 88 89 90. k2 V; `5 V' I3 H5 f
91 92 93 94 95 96 97 98 99 100
: O$ ]9 ]( C. d, u( P7 A
3 _6 N2 Q2 b. G/ x, U$ f8 S这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
9 a5 @8 y* t! m% `. J6 c7 `< >
' B- L* ^6 T! g* Q但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。9 \ S. R" Q0 M6 c, u
main()3 |0 s3 P+ V* o- \& H. l2 @( e
{ int a[10][10],*p=a,i,j,n,m;
6 {) I1 V9 n: J2 j0 E1 ] printf("%d\n",p-a);
5 i' C2 H2 y$ W6 w for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
- d7 ~3 X+ }2 j3 ~ ?0 o for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);9 v8 y3 W) Q; [$ y2 P4 r
}</P>. D5 L6 j. x: | O, W
6 b% k' y4 O2 r; O
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|