linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > c/c++/c# >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Windows/Linux下配置Eclipse+C
·c语言static与extern的用法
·VC++(Ctime日期函数)应用
·typedef struct和struct的区别
·C/C++对文件操作
·C常用算法程序实例-线性代数方
·C#发送Email邮件方法总结
·struct的初始化,拷贝及指针成
·C语言入门实例 switch使用
·c++二叉树实现源代码
·对初学者的建议:如何学习C语言
·C++ Builder 处理控件中的文本
·常用的BCB & Delphi 函数
·C++入门经典教程完全版01-引言
·C++ Builder 使用Canvas对象的
最新文章
·使用C/C++扩展Python
·C语言入门实例 switch使用
·在C#里实现DATAGRID的打印预览
·如何使用 Visual C# .NET 创建
·C#发送Email邮件方法总结
·一道C#面试题目引发的思考
·c语言艺术清屏
·c语言static与extern的用法
·大数的阶乘算法
·C#编码好习惯
·构造函数,复制构造函数
·typedef struct和struct的区别
·struct的初始化,拷贝及指针成
·超强的指针学习笔记推荐
·STL中erase方法对链表类容器的
Google
 
c/c++关于多维数组指针变量
[ 作者:  加入时间:2007-10-23 13:59:30  来自:Linux联盟收集整理 ]
程序作者:管宁 YRfLinux联盟
站点:www.cndev-lab.com YRfLinux联盟
所有稿件均有版权,如要转载,请务必著名出处和作者*/YRfLinux联盟
YRfLinux联盟
#include YRfLinux联盟
main() YRfLinux联盟
{ YRfLinux联盟
staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; /* 定义一个3行4列的二维数组 */YRfLinux联盟
int*p; YRfLinux联盟
printf("%d %d\n",a,*a); YRfLinux联盟
printf("%d %d\n",a[0],*(a+0)); YRfLinux联盟
printf("%d %d\n",&a[0],&a[0][0]); YRfLinux联盟
printf("%d %d\n",a[0][0],*(*(a+0)+0)); YRfLinux联盟
YRfLinux联盟
for(p=a[0];p/* 把a[0]的地址赋予指针变量p,条件判断pYRfLinux联盟
{ YRfLinux联盟
if((p-a[0])%4==0) /* 利用整数指针变量p减去当前地址判断出是不是已经显示出了四个值,换行回车 */YRfLinux联盟
{ YRfLinux联盟
printf("\n"); YRfLinux联盟
} YRfLinux联盟
printf("%4d",*p); /* 打印出元素的值 */YRfLinux联盟
} YRfLinux联盟
printf("\n"); YRfLinux联盟
} YRfLinux联盟
YRfLinux联盟
/* YRfLinux联盟
对于多维数组的理解比较困难,这也是由于和一维数组指针含义有冲突造成的,例如第5行中的a和*a打印出来的值, YRfLinux联盟
就会让人弄不明白我们知道数组传递的地址那么a表示这个数组的其实地址为什么*a却不是实际值呢?原因是在多维 YRfLinux联盟
数组中a+0表示的是第0行的首地址,a+1表示是第一行的首地址,那么*a其实就是*(a+0),那么第一个元素其实是a[0][0] YRfLinux联盟
而*(a+0)仅仅是把一个3行4列的二维数组拆为了三个一维数组,*(a+0)显然表示的不是物理位置也就不可能得到第一个 YRfLinux联盟
元素的值了,它仅仅是一个内存地址也就是第0行的启始地址,再看8行中的*(*(a+0)+0),它表示的则是第0行第0列个元素 YRfLinux联盟
的值也就是a[0][0],再次强调*(a+0)表示的是数组第一行的首地址,也就是第二行的*(a+1),而元素值要得到显然就是 YRfLinux联盟
*(*(a+0)+0)了如果是第0行第1个也就是*(*(a+0)+1),对于多维数指针的理解是个比较难需要反复观察联系的地方需要谨慎 YRfLinux联盟
如果多维数组的概念不清楚就需要从前面学起注意知识的积累! YRfLinux联盟
*/
YRfLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·c/c++中结构体(struct)知识点强化,链表的学习  (2007-10-23 14:09:55)
 ·c/c++中结构体的入门教程  (2007-10-23 14:08:41)
 ·C/C++中命令行参数的原理  (2007-10-23 14:07:35)
 ·C/C++中利用空指针(NULL),提高程序运行效率  (2007-10-23 14:07:04)
 ·c/c++中的字符指针数组,指向指针的指针的含义  (2007-10-23 14:06:26)
 ·c/c++中字符串常量的不相等性,以及字符串的copy  (2007-10-23 14:05:52)
 ·C/C++中数组和指针类型的关系的入门教程  (2007-10-23 14:03:24)
 ·C/C++中枚举类型(enum)的入门教程  (2007-10-23 14:02:09)
 ·C/C++中多维数组的指针作为函数参数传递  (2007-10-23 14:00:11)
 ·c/c++中利用数组名和指针进行排序的例子  (2007-10-23 13:58:50)