- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针" X4 K9 R+ h+ a4 b
如: int a[10][10],*p=a;
* F; k% H% G* v$ D5 p然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
% Y- n T* |! @/ a; Y< ># l3 v0 C) d( ]7 \5 V% ~+ k3 Z5 _
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
5 \% w4 L5 ] ?8 ~ }$ Opa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
! i0 ~6 S* u4 h) b' @ T a$ p大家来各自己发表意见。
, Z, l# ~! P! G+ U0 F& A本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
8 E. D% J9 ^0 Y1 d) T% Q0 A! v9 |# I* E: ~' v
< >下面这个程序是正确的:</P>
* C% ^5 E7 F, f$ b# g: F< >main(), D. \0 c, w4 t2 U" e8 u& n
{ int a[10][10],*pa=a,i,j,m;+ h/ N% n6 k! q1 t5 k3 w
for(i=0,m=0;i<10;i++)
& ?( u* W6 |( ?; P for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}" m X7 s2 l! u/ G9 @4 X7 q$ O
} </P>: f. {3 |; [* p) t1 j, `3 }
< > + J5 \+ J: P! f# g0 L
1 2 3 4 5 6 7 8 9 10
7 u4 `1 `- u" H# u 11 12 13 14 15 16 17 18 19 20
7 x4 n" o+ X* r, R6 w+ u# ^ 21 22 23 24 25 26 27 28 29 30- k* w f! n4 ]9 h( o
31 32 33 34 35 36 37 38 39 40
; c) | H- c' } 41 42 43 44 45 46 47 48 49 507 u& k# M6 w& a1 o
51 52 53 54 55 56 57 58 59 60
. r8 @& g9 l& |% C# b 61 62 63 64 65 66 67 68 69 70
, b! Y5 D6 d* W# o$ |! F 71 72 73 74 75 76 77 78 79 80
. ]6 g: S: J9 u2 r! i Q 81 82 83 84 85 86 87 88 89 90; O/ T) H2 _, ~; e
91 92 93 94 95 96 97 98 99 100
) t+ k: p8 \! G5 F: J3 Z3 h
$ W5 `9 ? o6 S Q, A9 C/ v7 v这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>3 q3 }+ S v$ T1 J
< >
! u$ }$ s$ }1 @7 Z, |但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。- L8 M" t( H7 _; F$ |5 D0 |
main()! q" t4 c! E: W8 [
{ int a[10][10],*p=a,i,j,n,m;: [! y1 m* f: c
printf("%d\n",p-a);0 J( }# U2 h; _" U
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
5 R0 ?5 j( {! O' L6 e for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);0 ^& N: J: D+ s$ s7 v0 A
}</P>. G; C; E5 x& C4 f9 _/ i
; F7 ?$ Y4 }( f, R/ Y[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|