- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针9 I" H+ \, U' S T- ~) u. Y
如: int a[10][10],*p=a;
3 _# z5 f7 Q! O- n然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
! W$ b- J0 k# I' P# g- P: y8 s< ># C: m5 N; I/ r# b5 r3 o4 @$ |. C
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以% O" L+ z, _* B' S
pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
6 {6 }6 j' V, M( B) e% @大家来各自己发表意见。
" |' d ~/ {5 v- M7 d P本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
8 h2 g( l4 w s( p( _ h1 f7 H, q) }9 l7 S# l
< >下面这个程序是正确的:</P>& ~ e, H! }/ e! i5 o6 E& I O
< >main()! U3 n. R0 L) h. z0 d, k
{ int a[10][10],*pa=a,i,j,m;
- a. b6 l+ S i$ } for(i=0,m=0;i<10;i++)
+ {3 A* [5 V# U: e' c for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
1 H) h0 A8 s! S } </P>
: O8 j0 x* M; ?$ s< > & O9 w/ o6 ?) F9 o
1 2 3 4 5 6 7 8 9 10' o" z. t. Y* ?5 L' S
11 12 13 14 15 16 17 18 19 20
) A$ n7 V/ k6 N0 b$ @; o9 F 21 22 23 24 25 26 27 28 29 30" k! X$ N1 k4 s) ?
31 32 33 34 35 36 37 38 39 40
+ _2 p% b; C; S6 L% D( p" ^ 41 42 43 44 45 46 47 48 49 501 G& e5 }) z1 j( A5 L. s' O4 i
51 52 53 54 55 56 57 58 59 60
. i8 N% o6 f- t- { 61 62 63 64 65 66 67 68 69 70( K# O& e2 t8 ?: K
71 72 73 74 75 76 77 78 79 80
1 w6 D8 G( Y* X1 ?9 q" x1 f 81 82 83 84 85 86 87 88 89 90
. P0 l1 `) Q2 `! V2 E7 J 91 92 93 94 95 96 97 98 99 100
6 E2 |! ^% E! D2 j5 }
0 v% I. ^8 v3 C( \5 L2 M4 B* t# S这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
7 _' ~; N! j. V7 I+ ^0 @9 J- Y- s< >/ y% l, D# M( J6 z( L. G& |
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。4 p) x( Z( d0 w B+ T
main()6 L+ J# p* G$ B
{ int a[10][10],*p=a,i,j,n,m;3 k- q* Q: z! O/ k2 c% x
printf("%d\n",p-a);
' }( O% B: v$ y1 ?/ N! t for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);; f) j2 N, v* j7 w# R3 U
for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);8 V# G, M. S9 g4 m
}</P>
6 O1 Y- Z* e9 w) G! j; C; p( N% W0 F6 d' V; R0 E) I
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|