- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针 j, V) w* e+ z% w7 m0 ?7 y
如: int a[10][10],*p=a;
/ X% t; F) b% W4 L. r然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
/ R1 `6 e: g' m1 o< >4 ]7 }. d: l7 f* o" @( @+ h
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
6 l6 U7 o% R# v9 X* spa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
" I, M5 R2 r5 a7 s& h( X' w3 f% V) P% p大家来各自己发表意见。
4 E. E/ B' I. d$ P, |本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>: C% V" h" ]) ?, c7 O1 _3 ^
1 i- {3 Y' t' ]/ c< >下面这个程序是正确的:</P>
g8 G; ?: M3 l) S) r- Q< >main(); E' {# b( Z7 B/ u- h7 p
{ int a[10][10],*pa=a,i,j,m;; X8 L0 o g& c
for(i=0,m=0;i<10;i++)
) _+ W! n/ m" d8 l& y" N" i& A for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
/ d& e9 V7 j- |. p4 c3 U/ ~9 i } </P>$ y0 ^& b, f5 K: T1 |. O
< > ' m( m7 V$ n, j
1 2 3 4 5 6 7 8 9 10
- e' C- `9 u/ L# x 11 12 13 14 15 16 17 18 19 20
- `- o* {' P& ~! X: M! x: @) S6 O 21 22 23 24 25 26 27 28 29 30
7 b& a$ v- N4 s& L 31 32 33 34 35 36 37 38 39 40+ ]2 @/ f' K! U3 Y
41 42 43 44 45 46 47 48 49 505 ^6 R% }# }# G* L8 N' K4 o
51 52 53 54 55 56 57 58 59 60. h u5 R3 G7 L7 t) h4 [8 U
61 62 63 64 65 66 67 68 69 70
3 n8 C, F+ D- Z& A+ f0 e" @ 71 72 73 74 75 76 77 78 79 80! C+ ^! o3 K v, ~5 A4 O6 D
81 82 83 84 85 86 87 88 89 90) E2 h% U" r( R! v
91 92 93 94 95 96 97 98 99 1001 ~" ~ _* q6 y' ~' c) s( J1 S
3 ~* q/ p5 A/ l
这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
) B0 o# H: E% K; P# H; G6 U< >
6 A8 o4 e& T: A) _$ P' P但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。
6 H' R" a. `$ d+ F ~main()7 Y4 N' ^ T( X! r
{ int a[10][10],*p=a,i,j,n,m;
1 L" \1 D3 h8 P% L printf("%d\n",p-a);( x X2 V2 B2 U. |3 \0 D1 o
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);* L7 F- o# w2 s- a @5 i. d
for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i); y( q# |( W' W: v% z! d
}</P>4 Q* `( A! h: Y3 {; \
U; a" b7 }/ j( |. V
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|