- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针
2 }3 S) M6 ]# z% E' u* ~如: int a[10][10],*p=a;
' [1 C3 L' _$ G( W0 e N然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>" ]: T# R1 ?! K: b: P- V
< >; S# W% C. C% d7 [; @% M, i
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以; A4 D/ W* u# ]( K; v% `( ?
pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请8 E& `( d3 E9 {( } n7 N
大家来各自己发表意见。
5 z3 B3 W! N- e; g c, _; h5 a/ c本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>2 k9 v% r% R% L% T& s8 }* n/ ^/ y
: g9 D4 d5 A i
< >下面这个程序是正确的:</P>
; g# H7 o/ E) W4 k+ r( l6 D, ?< >main()6 r! l5 Z1 _+ o; J" m
{ int a[10][10],*pa=a,i,j,m;9 B( m/ F |. J
for(i=0,m=0;i<10;i++)0 i2 j; l+ n) f l) t# U1 b
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
9 [8 e6 B% v1 i } </P>
5 K1 b1 i |" k+ \< > 9 V9 S1 Z# L1 b* V0 f/ W
1 2 3 4 5 6 7 8 9 10/ A8 F9 A9 M4 c8 Y4 ?
11 12 13 14 15 16 17 18 19 20
2 V4 v$ B }/ H5 T/ P 21 22 23 24 25 26 27 28 29 30
" S8 M) Q% Z+ Y/ e 31 32 33 34 35 36 37 38 39 40
% k9 [" y& Y( Q" k# w 41 42 43 44 45 46 47 48 49 50( w" R2 S2 C( a g
51 52 53 54 55 56 57 58 59 601 P7 P2 C9 f$ w3 v7 w: ~. N9 A
61 62 63 64 65 66 67 68 69 70
0 c1 F! F3 V% d/ U N3 y8 |3 J 71 72 73 74 75 76 77 78 79 80
& E" ] ]1 P2 T4 P 81 82 83 84 85 86 87 88 89 90
- b0 S$ [2 l% B: B4 {/ j 91 92 93 94 95 96 97 98 99 100
: W8 P" E) T1 C) j. A
" H2 D8 y' |4 r" ^5 j这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>! s( A- I4 e- N; {( D( {! ~
< >* J: ?- t/ z' }" Q& B5 b
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。
" P! G3 L6 ~( H2 C% C/ emain()
+ z; M+ b+ x. R5 `( o" d" F ~{ int a[10][10],*p=a,i,j,n,m;
0 b6 W, S! }. Z printf("%d\n",p-a);9 U/ R2 c" ~: R& a6 K
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
; \8 w, A4 w# g8 \8 _9 I5 J3 Z/ i for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);, L1 o' @+ {- U" r4 j: `/ m
}</P>6 B% A* X1 p; Q1 L( B; l+ u0 d2 {
# t, k% Q6 t1 _7 t[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|