- 在线时间
- 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; {% K* B9 t* q2 u3 V# p如: int a[10][10],*p=a;
* r$ N- W' l$ a. l6 @7 [9 i然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
9 ^$ e& | c, N3 F< >
0 ]- B1 V% X, c$ i; f# ^* K4 d我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
3 V4 I$ S- ?6 _pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请7 `/ I. N+ l* \! h
大家来各自己发表意见。0 r8 l, P( Z* t7 w( O
本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>
/ c; I* z/ | l. ~( l3 Q/ g/ q3 X; R) e8 ^ e
< >下面这个程序是正确的:</P>
2 w& e- o7 ], G3 q$ D4 _/ R# _% I< >main() |" ~; b P7 @- _
{ int a[10][10],*pa=a,i,j,m;
4 k: T8 |& Q8 I o, U% z0 {! O for(i=0,m=0;i<10;i++)
( f- Z- k/ ?6 _3 Q `) _ for(j=0;j<10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}4 V2 Y) x/ Y" \
} </P>
8 c% @8 @6 R* R! T/ `< >
6 O5 U" A$ M# o$ m 1 2 3 4 5 6 7 8 9 103 E) J( M- y3 r% @% ^5 _
11 12 13 14 15 16 17 18 19 207 i) n# T$ J: C9 j
21 22 23 24 25 26 27 28 29 30
. c. N' b" x; z+ S 31 32 33 34 35 36 37 38 39 40: A" B& i. f/ D, {' L8 j# d
41 42 43 44 45 46 47 48 49 50& J* P& D3 i: a
51 52 53 54 55 56 57 58 59 606 l4 c5 N4 a4 K6 l! c: g
61 62 63 64 65 66 67 68 69 70* @; ~" q1 V: C- U: ~& [
71 72 73 74 75 76 77 78 79 80
9 w+ n) x1 V- f( x: u+ [, Q' L 81 82 83 84 85 86 87 88 89 90
' @* G9 k4 n$ }: O0 Z# N 91 92 93 94 95 96 97 98 99 1008 e/ D! o) }8 `* S1 r6 i2 Y7 k
$ J7 H3 ]% ^' a6 y0 x2 i8 C. B
这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>
. N" V/ X9 C9 l+ U. }0 N< >
) U) p$ P. A2 g但是循环控制无法使用for(;p<a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p>a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p<a+100时则一次都不循环。" M) a w4 D2 c; `& e
main()
1 \' |# K' ?7 q& m% i% W' V{ int a[10][10],*p=a,i,j,n,m;
8 f4 S" N- D" g( ?5 B9 i printf("%d\n",p-a);
+ w. a) l2 C1 Q for(i=0;i<100;i++,*p=i,p++); printf("%d\n",p-a); printf("%d\n",i);
( _. {) g) o1 v" ^ for(i=0,p=a; i<100 ;i++,p++)printf("%4d",*p); printf("\n%d\n",i);
8 |) j+ v5 m( G}</P>: Y* F0 `/ ^6 X% ]' H% G- l% s
3 N+ F2 a/ t/ [( s[此贴子已经被作者于2005-4-23 21:59:02编辑过] |
zan
|