QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2756|回复: 3
打印 上一主题 下一主题

[原创]有关指针与二维数组

[复制链接]
字体大小: 正常 放大
xxb1922        

1

主题

0

听众

22

积分

升级  17.89%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-23 20:06 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>定义一个二维数组和一个同类型的指针' O1 F/ H. P  w6 ^
如: int  a[10][10],*p=a;8 Y4 i! q! n6 h$ d8 h$ s9 s4 ~1 l
然后用p++来逐个引用数组a中的100个元素吗,就像引用一维数组b[100]那样的吗?</P>
$ p2 g/ L5 e3 @7 e9 A/ o, L  c& H2 J3 K<>
+ r' b9 @  ~, j我认为可以的,因为数组元素在内存中是连续存放的,不论是一维数组还是多维的,所以
. ]$ p. V' t' O7 c2 x) k8 _pa++应该是可以逐个引用的,但是我在编程的过程中却出了错,不知道是不是可以这样,请6 G9 W9 j# Y; ?; R/ @2 I0 N' r$ ]5 w
大家来各自己发表意见。5 X0 r; r0 f5 b5 N! m5 E4 m, X6 N
本来我是可以用其它方法来引用数组元素的,但是发现这样要方便的多。</P>) O4 J) ]6 F( h+ L, N: k3 A! c

* C# \" z( m0 ~5 ~' B<>下面这个程序是正确的:</P>
; T2 r& B7 |/ [' ~! i  S$ [; o<>main()
0 Y) z& ?; E. c7 ^+ c7 j# ]) D, m; C{ int a[10][10],*pa=a,i,j,m;) S: I6 U6 m: T+ H' N# d# |
  for(i=0,m=0;i&lt;10;i++)
6 V2 }+ W! N  ]* Y# D! S    for(j=0;j&lt;10;j++,m++,pa++){ a[j]=m; printf("%d ",*pa);}
# }6 x9 C  ~+ D' b4 s    } </P>" @8 z8 z9 B& R4 q
<>  
0 e  r; n/ ^& i  q" \5 M   1   2   3   4   5   6   7   8   9  10
: A* |" d  ]: ~2 ^7 d# u' U- P  11  12  13  14  15  16  17  18  19  202 D1 i: \3 }8 @0 p- H
  21  22  23  24  25  26  27  28  29  304 ?) G4 j. N% ^( U3 k1 S; ]6 S& ?
  31  32  33  34  35  36  37  38  39  40
# a, @5 C! V. b: f; c  41  42  43  44  45  46  47  48  49  50$ H' ^& j. t& m8 V8 ~
  51  52  53  54  55  56  57  58  59  608 h+ x8 e- i7 \0 o
  61  62  63  64  65  66  67  68  69  706 Y& d2 L7 l; v. Q- u, S. y
  71  72  73  74  75  76  77  78  79  80
2 I* M  w8 a. y( Z+ v& e  81  82  83  84  85  86  87  88  89  90
# ^6 l" [3 @* z6 Z  I+ G( `  91  92  93  94  95  96  97  98  99 1005 G& ^( s# S3 I0 s4 a& F1 x
4 u- o6 H8 U- c3 d4 R
这个程序的结果表示,可以用一个指针用pa++的形式逐个引用二维数组中的元素。</P>/ c3 ~0 E7 @2 N) c( U
<>
" {7 t8 m9 E1 W) B* C( v但是循环控制无法使用for(;p&lt;a+100;p++)来控制,否则总是出错,书上有这样的例子,原因实在想不明白,语法上也不存在错误,倒是我把它改为p&gt;a+100后可以运行,但循环了120次,前100是正确的,但后20次则是不需要的,无意义的。而用p&lt;a+100时则一次都不循环。
% Z! \4 r  \! t' O+ h6 _7 Tmain()
0 G9 N4 b/ V9 s" @& n1 F{ int a[10][10],*p=a,i,j,n,m;
& B6 _. f6 _# m  printf("%d\n",p-a);
0 e9 @+ g" P: F# l) C/ P  for(i=0;i&lt;100;i++,*p=i,p++); printf("%d\n",p-a);   printf("%d\n",i);
$ a$ Z, D" D3 n# Q  H$ s' |  for(i=0,p=a;   i&lt;100   ;i++,p++)printf("%4d",*p);     printf("\n%d\n",i);$ J- ]) X( `  p; N$ L% Q
}</P>
3 D6 H" p3 F9 n. r  L: E
% L3 `) X7 I7 S0 }: o" B1 U
[此贴子已经被作者于2005-4-23 21:59:02编辑过]
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
如果没有路,可以停下歇息;
如果没有忧伤,可以试着微笑;
可是幸福呢?
没有了幸福,我靠什么来生活?

22

主题

2

听众

72

积分

升级  70.53%

该用户从未签到

新人进步奖

回复

使用道具 举报

ilikenba 实名认证       

1万

主题

49

听众

2万

积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    回复

    使用道具 举报

    plgatc        

    4

    主题

    2

    听众

    19

    积分

    升级  14.74%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-14 10:28 , Processed in 0.414268 second(s), 73 queries .

    回顶部