- 在线时间
- 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 ?1 b" p. u1 `7 z0 W如: int a[10][10],*p=a;
! o; _ K9 q: b- s+ S2 c然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
, p9 B; x# x# D' Y< >9 N# K( l5 @! {& N* J# k
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
" i8 K* {6 ]# ]# m" L& ^4 Kpa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请5 V/ w. H( W7 g+ v7 A
大家来各自己发表意见。
6 Y1 B5 }: H8 J9 G' x% h本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
( v3 O! H& _& D2 \8 t
; {$ H( W- A; i" ?< >下面这个程序是正确的:</P>6 \; _6 V8 W9 M
< >main()+ T+ @% G2 _# J' e0 a( V2 y
{ int a[10][10],*pa=a,i,j,m;; U7 J5 H& \1 A9 E& J7 ?! g
for(i=0,m=0;i<10;i++)- U) |" D5 Q% y6 c8 p; c0 w J
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
% K) {& E0 ~( K' P5 R } </P>6 h: u+ M7 @2 }0 b+ b+ v( Z
< >
; ?$ a: l# t4 ~) U 1 2 3 4 5 6 7 8 9 10
; |" A$ Z" s3 }1 N4 k$ g+ c) V 11 12 13 14 15 16 17 18 19 20
) Y4 K7 T# I" p2 R. B$ F0 L! B 21 22 23 24 25 26 27 28 29 302 n0 T. t& `: u6 z9 I- E
31 32 33 34 35 36 37 38 39 40
. |- y( E5 `& \; _: k( A 41 42 43 44 45 46 47 48 49 50) I( F" w1 V2 w7 N, Z5 c
51 52 53 54 55 56 57 58 59 60
. ^" M$ Y! M. h$ W 61 62 63 64 65 66 67 68 69 70: s$ P( ~2 [& E* H6 v5 ]! T) y
71 72 73 74 75 76 77 78 79 80
: m. o# y( ^" \. } 81 82 83 84 85 86 87 88 89 90: D4 v9 i, j( U' a
91 92 93 94 95 96 97 98 99 100
; n u9 R0 q+ ^/ y
- j/ v+ C/ ^1 M' v# d这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
) q+ p- W( {, S1 A< >/ h: e+ o0 O$ g3 K
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。+ p1 F2 S) e( W ^# e
main()
2 J* m) l z, S( x{ int a[10][10],*p=a,i,j,n,m;+ g) ?+ O6 r8 N" [- w, w: |) Y/ T [; a
printf("%d\n",p-a);
9 H+ e, P5 G5 D( ~- p: f; M5 m for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);) n a8 d- d2 o6 S) q, @
for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);
3 V b% P) G7 T: H}</P>0 L3 O" @) {: }0 K2 @% J- w
/ j% r" w$ O; Y% i2 z8 D7 Z
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|