- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针
+ O) M! V- O* p; O( t如: int a[10][10],*p=a;, m4 }0 J* s! V; A6 |4 n) d
然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
# J% M7 h+ j$ \1 K2 l- k+ a< >
1 b& B7 [# L+ }; ?) h- t我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
) f$ J' |7 l* [' A8 V9 ^0 npa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
& h$ a% h% m* d! C" i大家来各自己发表意见。
: t" `( C! r' _: U( G- N+ I+ E本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
9 C* p9 p0 x1 ]6 t% {! D1 Q& M( X5 _( a/ K- }, d
< >下面这个程序是正确的:</P>
M9 \- U3 f8 P2 w4 a! A' X< >main()5 w6 \$ ?2 f6 H) J/ Q9 [# i/ j$ d
{ int a[10][10],*pa=a,i,j,m;5 U0 C. B+ u, I! w6 t: V
for(i=0,m=0;i<10;i++)2 j0 _6 O) v( E l9 h; m+ J
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
$ V+ Y' I! R, s } </P>! f1 I8 W8 C+ z7 }
< > + E- _/ [5 n3 j" N# M# j
1 2 3 4 5 6 7 8 9 10
0 b$ l3 }) T( q0 ^4 s1 q 11 12 13 14 15 16 17 18 19 202 F; y1 v' z& E- ]0 D/ ?: E
21 22 23 24 25 26 27 28 29 30
2 m5 h! S' e3 F" [. ]/ a0 E* Q 31 32 33 34 35 36 37 38 39 40
- J, P& O& [( K2 B' Y 41 42 43 44 45 46 47 48 49 50
- M" Y2 s5 [' z3 _ 51 52 53 54 55 56 57 58 59 60. v7 [' i, c* h
61 62 63 64 65 66 67 68 69 70
& R* T% a2 k R& E/ j 71 72 73 74 75 76 77 78 79 80
$ |+ D' e. R6 ?! ^ 81 82 83 84 85 86 87 88 89 90
! {" y8 h q. O 91 92 93 94 95 96 97 98 99 100
# D' v8 m% ]) c% b, B1 J% l& T, v6 I, n
这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
3 k( R5 B/ ~/ J8 m6 N8 d& t< >
, D& g& L% C3 P: a6 S( {* {但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。
/ t8 k/ L# c4 P2 h3 Gmain()
+ E$ s* h! g+ g{ int a[10][10],*p=a,i,j,n,m;
1 T: l7 L, a1 W, i; T2 S$ l' L7 A printf("%d\n",p-a);
3 l- v: A) M9 ?. i& Q for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
/ Y: w- A, n& T D0 c" t6 M for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);
% J4 x" c9 E1 u2 F: i+ X E}</P>
, m2 J- R# i0 g0 I6 a9 i7 r1 B9 v% n7 z; R3 x, j
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|