- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针" l) L7 _; C4 l. Q
如: int a[10][10],*p=a;
- o7 T; }5 l; ]! R( e; W/ ?$ e% ^然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>) f- `- J- k0 c' U. ^
< >6 [5 M7 c+ c ~* B3 p, O
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
+ N9 K: l/ e5 g' E1 f! tpa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
+ i. N8 m n' W) A# L大家来各自己发表意见。9 @$ R5 i: x5 y. x5 l
本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>: Q: }1 A9 p: M7 c+ y
1 K1 n) _6 l: P6 f3 l" i
< >下面这个程序是正确的:</P>
) E3 I! S+ b3 Z/ Z- E+ E! u< >main()
' G$ V6 K& h" v+ K{ int a[10][10],*pa=a,i,j,m;
. U9 s1 H6 z+ x7 b9 [# a for(i=0,m=0;i<10;i++)3 [+ T) w& j0 U
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}- N3 Z7 s8 S7 L, v) o5 ?% a
} </P>
' z& {; w/ G' ?6 N8 G9 s2 v( m< >
& X" }) R! r3 H! N' d. [ 1 2 3 4 5 6 7 8 9 10
0 Y' l, `# W s! V% ?/ U 11 12 13 14 15 16 17 18 19 201 w2 |2 N5 _( ?
21 22 23 24 25 26 27 28 29 30
! Q% t2 K% p# X- l+ D- D! S 31 32 33 34 35 36 37 38 39 401 n" p# d! m q) ^
41 42 43 44 45 46 47 48 49 50, L9 x* j' }5 `3 a; E; i- j% ^1 M
51 52 53 54 55 56 57 58 59 606 a7 x0 q& ?: o7 ^6 G% O
61 62 63 64 65 66 67 68 69 70
e$ i$ H8 M7 T+ \1 ` 71 72 73 74 75 76 77 78 79 80
+ A# N V3 Z! w! F8 H3 g 81 82 83 84 85 86 87 88 89 90
; ?6 w9 J2 M, K; G7 [; U8 ? d 91 92 93 94 95 96 97 98 99 100
5 |; c- e- G( g* {# I. h
$ S5 Y" d7 J& M I) {这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
( B' A" K! q$ j8 Y+ u& e< >+ d& _" I; f5 ?4 W- d8 k6 V
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。
- x9 K! H. u2 ]$ omain()/ |. t% y& V0 u2 ` g* m8 i
{ int a[10][10],*p=a,i,j,n,m;
( k$ w) R& J0 r" F1 ? printf("%d\n",p-a);" Q" U! B& E4 T" {9 w2 W. i
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
3 q- Z: s3 j9 y; h0 E6 l for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);0 H3 O+ V; D9 _
}</P>/ Y5 Q0 m" R, w! B
9 X1 h6 w: D0 \# [[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|