- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针+ V8 R( h+ t" w5 }9 B- E
如: int a[10][10],*p=a; j' y$ R2 h2 B% r
然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
; V7 {* V$ O" N) E< >$ l' d6 k& s7 V
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
& X1 `7 p7 T6 n/ m+ Spa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请( M' L: ?% }! t( _5 R. q
大家来各自己发表意见。4 j ]6 q& h% z$ u: ~# B1 T1 g
本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>( }$ ~1 R* U& V& W6 z% ?: }! m3 e/ r
8 v* @$ T" W# e< >下面这个程序是正确的:</P>
; g3 h' q- L7 E+ Q$ ^7 q< >main(); A0 ]$ b" l1 G {# ~/ g5 x; W. u
{ int a[10][10],*pa=a,i,j,m;
2 i, i0 z4 K2 X" d7 q1 S6 W for(i=0,m=0;i<10;i++)7 s! h* I7 L+ T# A
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
* u6 c# [/ _" W' }- P" x } </P>, u/ v+ B; h4 e
< > $ o$ I$ K3 d8 f. q
1 2 3 4 5 6 7 8 9 10
; S6 y4 ?- t* Z+ V& g T1 M2 `9 d" ~ 11 12 13 14 15 16 17 18 19 20; l$ q3 l5 a- ]3 P
21 22 23 24 25 26 27 28 29 30( h& e/ D5 @8 K
31 32 33 34 35 36 37 38 39 40! i# p( E& ?: q. s( G9 K
41 42 43 44 45 46 47 48 49 50( x+ A H5 m9 u: f4 n
51 52 53 54 55 56 57 58 59 60
1 h) S1 h9 l+ n. ^5 h 61 62 63 64 65 66 67 68 69 70
+ m3 M* S& _5 t( _) o 71 72 73 74 75 76 77 78 79 80+ M) |" R. E$ Z/ n' I( {! U9 k
81 82 83 84 85 86 87 88 89 90
+ }2 _/ \/ N, G; ^+ n 91 92 93 94 95 96 97 98 99 1008 z& m3 w% g9 s
5 L8 O4 [5 A; x0 Z6 r4 E这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>. S6 A7 c5 v! J& m4 X
< >" S9 Y/ y- `1 W/ ?) H
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。# T% J' t' d( i+ G5 H! p
main()1 g6 N( O6 V# G8 m! O) }) v
{ int a[10][10],*p=a,i,j,n,m;' v m2 F. [% ~$ \
printf("%d\n",p-a);$ \8 X5 d% u* ^6 f3 b
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);4 O6 [# u! d* I% a0 z1 C. x P
for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);
- ^% F/ h9 H7 V1 i6 _# H}</P>3 e m2 b+ ~1 Z0 A
" C4 `- d; G6 ~: I( I! ~+ \' l& K
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|