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

来源:互联网 发布:万艾可用多少毫克 知乎 编辑:程序博客网 时间:2024/04/30 09:44
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) |
0

上一篇:变量的定义和声明的区别

下一篇:float double范围和精度

相关热门文章
  • linux 常见服务端口
  • xmanager 2.0 for linux配置
  • 【ROOTFS搭建】busybox的httpd...
  • openwrt中luci学习笔记
  • 什么是shell
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~

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。

回复 | 举报
原创粉丝点击