- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针: ?; l4 v3 Z" s; d( p
如: int a[10][10],*p=a;
8 O4 z6 q5 c+ U4 _然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
' Y; }0 b. e& u7 k; R< >
' x# l R! V+ z6 d! f# |0 W我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
6 }3 Y( P0 t% S4 p- t0 xpa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
5 c x/ I" u* Y6 l; d- f大家来各自己发表意见。 b3 R: B% e/ q x; J; `
本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
' g; f6 r; b9 {- x3 C, Z( v* E& `0 f
< >下面这个程序是正确的:</P>
: o8 c4 J7 V( Z< >main()3 Q4 h q- x6 O* I
{ int a[10][10],*pa=a,i,j,m;! J6 s# ~/ a' g3 V1 n
for(i=0,m=0;i<10;i++)" U) @; s: S+ m: \' J1 Q; l
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}5 H$ ~7 b1 Q- l
} </P>
4 V! C7 q2 [8 B9 b! N( ~3 }< >
0 N1 Q$ \! M5 V- k 1 2 3 4 5 6 7 8 9 10- h3 r9 ~3 _( m" S8 j) h2 p
11 12 13 14 15 16 17 18 19 20
- Q% z3 L5 w1 E 21 22 23 24 25 26 27 28 29 30. u; h$ n9 x* u' v; d
31 32 33 34 35 36 37 38 39 401 h" ]( V2 ~' l. o
41 42 43 44 45 46 47 48 49 50
N" x! G& R! A$ c 51 52 53 54 55 56 57 58 59 60" ]: i1 d, I8 ]' G# D
61 62 63 64 65 66 67 68 69 700 W1 q5 U& M9 X- ?( E9 X, x6 f
71 72 73 74 75 76 77 78 79 80
+ {* ~% g/ g0 p* E; P5 z 81 82 83 84 85 86 87 88 89 90
. a& a* v Y4 o+ c 91 92 93 94 95 96 97 98 99 100
$ O( `( [4 E. y9 U6 z3 R6 x$ c
5 D1 Q1 L% }9 `& @3 |这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
# u) h( t! T) `- A< >
' m; x+ s$ j3 ]1 S ~3 G但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。
" z) F' ]6 y7 ~. `main()8 T. K1 T5 ^+ T( j
{ int a[10][10],*p=a,i,j,n,m;
3 O* Z- p& A: d! r" _% H+ g printf("%d\n",p-a);( m/ B; I2 X6 l2 P7 O# ]
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);2 u5 J' F* |- D9 ]8 F2 \
for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);& u2 a h& g& X: Y
}</P>
: O4 v' n9 j) D" V( V1 O$ L- T; f$ F( C
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|