- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针% t5 \6 `5 w; k7 R- K a
如: int a[10][10],*p=a;; V4 |. T$ F2 E" Z7 i; X
然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>' M, ^! a% p5 V" U- x0 r4 D/ m" B6 e9 N
< >
9 `) M1 |5 s" A我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以3 j+ i0 R; O7 B) |
pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
$ _ T+ i9 p8 O; {% I, j& _+ }大家来各自己发表意见。
% n W6 j5 L( C+ R" {+ x本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P># t: L6 `- B# w" H/ |( ^
6 V, x! R' U' n- W< >下面这个程序是正确的:</P># q2 S' R; a, S( L3 j! {
< >main()
5 |- R% ~- ~" G4 u{ int a[10][10],*pa=a,i,j,m;* d. o- M# }& j" ]
for(i=0,m=0;i<10;i++)- m5 w& A7 |+ u# d% r9 m; w
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}6 r. F4 X5 [; T. M$ r3 o
} </P>
+ p; j) ?% C" z" O6 a4 ?< >
' @, i/ e P+ V1 W% B 1 2 3 4 5 6 7 8 9 10* @! {! v- q+ d. Q& B
11 12 13 14 15 16 17 18 19 202 X L { r- ]: H$ v
21 22 23 24 25 26 27 28 29 30
( v0 Y# d) R1 ]- Y 31 32 33 34 35 36 37 38 39 40
: S# G0 m+ k l; s8 J! q7 d 41 42 43 44 45 46 47 48 49 50& u. t1 a* y& Q: t i1 U
51 52 53 54 55 56 57 58 59 60
( O% E8 [' x$ O- j! S+ c3 f 61 62 63 64 65 66 67 68 69 70
6 j! `/ J% _3 F0 Q, @ 71 72 73 74 75 76 77 78 79 80( `8 F* E, z* T u" l
81 82 83 84 85 86 87 88 89 906 J8 m* R6 P. C( l4 v, R$ o
91 92 93 94 95 96 97 98 99 100/ x4 j' |. I: G+ U, n+ V
# q1 N- {$ s, e+ ]5 |
这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>5 i- ^ g0 ?5 ]2 j# o4 C
< >
* s0 r* Y3 n7 A9 N% J但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。1 @4 M E$ ?: `+ ?( f8 r/ g: J
main()
8 m; N( S2 {( L2 m5 K; s M3 M{ int a[10][10],*p=a,i,j,n,m;8 S8 t$ o |( y% I2 h: D) B
printf("%d\n",p-a);
1 Y: H: u H2 N' d$ U% g# I for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
/ q, l- }" _9 z: _- ?( F/ T2 ] for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);
" I2 X% t/ m8 C% V}</P>
% m |5 E: @( g1 G# D" x* B: M# |6 P: A! [: k- N
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|