二维数组和指针之间的关系

data_type array[M][N];
data_type *array_p;
 
  在gcc编译器里,如果直接进行赋值——array_p = array;回有指针赋值不匹配警告出现,因为在上面的赋值过程中,其实是将一个二级指针array赋值给array_p。
 
  下面就对一个二维数组名做一个简单的说明,如上定义了一个二维数组后,array[0]、array[1]、array[2]、...array[M-1]都是一个指针,故array可以理解为一个指针数组,即array就是一个二级指针。
 
  很多人使用二维数组的时候会将二维数组当成一位数组来使用,其实这种想法是不对的,例如,*(array+i*4+j)大家以为是在输出第i行j列的元素来,其实不是;当i=0时,上面的操作得到的是第j行的N个元素,而不是一个data_type元素,当i不是0的时候,输出地可能就是我们自己都不知道的东西。但是编译器不会报错,这是因为我们是直接面向地址的操作,不会产生数组下标越界导致的段错误之类的报告,因此在这儿有必要做一个日记。如果有不合适的地方,往各位高手指点。
 
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(920) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2010-04-21 20:08:22

array_p=array+0;去除警告 输出第i行第j列可以用 *(*(array_p+i)+j); *(array_p[i]+j); array_p[i][j]; (*(array_p+i))[j]; 当i不是零的时候输出的是4*i+j行的N个元素,只要4*i+j不超过M。

评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值