- 在线时间
- 0 小时
- 最后登录
- 2005-6-22
- 注册时间
- 2005-4-23
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 65 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 22
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 4
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   17.89% 该用户从未签到
 |
< >定义一个二维数组和一个同类型的指针
7 T! g3 ?) C5 E' \: e7 {) Q" _如: int a[10][10],*p=a;/ E$ |! z; Y U% U/ C) L
然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
- J* Y9 z% |) J W< >- T8 P% k1 Y$ S2 {. t' q
我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以3 T& @# P" f$ M: W5 u. q9 G
pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请
$ L7 y- p+ g# l大家来各自己发表意见。
& W0 n$ @/ T' A" V5 P本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
# a. c+ M4 [2 g7 j- e O( l
# `! \; P& c' h/ ~: B; @< >下面这个程序是正确的:</P>
v7 B: T, O! J< >main()+ n7 C9 A7 m2 o; E8 R- Q
{ int a[10][10],*pa=a,i,j,m;
! `# N. c! _* u for(i=0,m=0;i<10;i++)1 F( Y# B1 ~- T" J
for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
& ]3 C3 X) q2 P7 C% s- B } </P>
% i. A G0 J/ S$ M4 ~< >
* ]( a! X0 w+ q7 x+ I9 F3 m 1 2 3 4 5 6 7 8 9 10' t* k6 e# y$ @ j' B# c3 e2 S
11 12 13 14 15 16 17 18 19 20: G+ c: U) x* D3 T
21 22 23 24 25 26 27 28 29 30
3 z4 b6 \* q0 M 31 32 33 34 35 36 37 38 39 40, D' L& c9 _5 P5 h1 l4 R9 I: w" S- P
41 42 43 44 45 46 47 48 49 506 ~/ d3 f1 q5 G1 O0 Y' o
51 52 53 54 55 56 57 58 59 60
* m \5 q) O3 h L' |2 m 61 62 63 64 65 66 67 68 69 704 A, O1 T* T) O8 D
71 72 73 74 75 76 77 78 79 80
) ]. }: w- H, ^ 81 82 83 84 85 86 87 88 89 90
+ B7 c' `* H+ X/ W1 ^, D6 _$ ~ 91 92 93 94 95 96 97 98 99 100
0 t% E! Y2 A1 b8 @* p& e( l: a; T5 v
这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>* i& r( A! c, x: W
< > n& {- O# H% y# |' l
但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。
5 U- `8 j, O& Z2 }1 v9 Wmain()! X# ]2 N- g- Z! Y Q
{ int a[10][10],*p=a,i,j,n,m;# @' g. A" y, G& S% d
printf("%d\n",p-a);6 J) M: b3 n" e1 N/ {1 o
for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
+ j3 c7 N! C( c# { for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);: W# e) r+ F: Z
}</P>
# Q# h1 Z' {0 r# y" `$ ^ e' Z# d2 G4 R& v" ]! O) s
[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|