- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针4 d% n6 q: j' ]: X5 r- g
如: int a[10][10],*p=a;8 w$ b, V# D7 E5 l' i& f+ ?: f
然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
; s9 |) u; n, ]/ c" _, {< >4 X% _1 E& r# H
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
- L2 K( q- s* U6 Q5 |, ^1 lpa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
0 I- J P- v7 a4 R5 s/ G大家来各自己发表意见。
* s1 Q) Y$ W: `# k本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>2 P0 N& R& y: D8 B8 J
4 i! @) N( {% u; f. `1 ^
< >下面这个程序是正确的:</P>2 ~/ y2 e+ L+ T [; d2 A2 U4 E
< >main(), g( s4 _$ a$ Z9 H
{ int a[10][10],*pa=a,i,j,m;! `3 N, A( _2 T9 h& I) G( y
for(i=0,m=0;i<10;i++)
/ M$ o" A! g: }) u' Y- b6 [ for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
u/ Q. W$ f( c6 K) } } </P>- R& g7 R' B2 w( B: d
< >
! i. U5 B- z4 d% ?: J3 R& K& Z6 A 1 2 3 4 5 6 7 8 9 10
& ~2 o) _4 O) w0 @) k7 a$ p/ ^9 O 11 12 13 14 15 16 17 18 19 20 s6 G& E: Q2 q( K/ D* V8 u( S
21 22 23 24 25 26 27 28 29 30% S+ k" a" d! W- E
31 32 33 34 35 36 37 38 39 40
: \3 M. Q; p/ b( g2 y2 m' s/ l 41 42 43 44 45 46 47 48 49 502 T, A9 K1 y, ~4 G' B
51 52 53 54 55 56 57 58 59 60& `3 m) h1 u5 `4 p* ?" s
61 62 63 64 65 66 67 68 69 708 f2 l% I! \; a& g. ]4 {/ ], c" e
71 72 73 74 75 76 77 78 79 80( E" Z( s4 ?, d% r
81 82 83 84 85 86 87 88 89 901 y! S8 d' R6 S
91 92 93 94 95 96 97 98 99 1002 P0 N8 C/ a% D. _( b8 U4 T
7 i3 o, D% G& I6 \5 H! T8 Y这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>) L3 O- g4 B6 M
< >- v% J/ u% P( k# B
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。
p% Y5 f2 ~/ c) t7 Mmain()1 ^6 b8 B! J! `
{ int a[10][10],*p=a,i,j,n,m;
2 _' }- P: n# {( F printf("%d\n",p-a);- x5 h0 A/ k( x: W2 s5 x
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);9 v/ k: c3 t0 r. `/ B/ R; A
for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);
0 ?) j k1 f0 p, Q) ]5 g6 P}</P>" J/ M* N8 s( c+ s
3 `9 q( A! u7 Y+ M d
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|