注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Copper peas ' Bolg

Keep On Moving...This Is My Life...

 
 
 

日志

 
 

【原】 C/C++ 记录指针与数组  

2011-11-09 22:30:36|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
从*(*(a+i)+j) = a[i][j] 谈起

一维数组
eg:a[3];

a 是该一维数组的数组名,也代表首地址即&a[0],*a = a[0];
a+1 代表a[1]的地址 &a[1], *(a+1) = a[1];

二维数组
eg:a[1][1],看成二个一维数组(a[0],a[1])组成
 
a 二维数组的数组名,也代表首地址即&a[0],*a = a[0];
a+1 代表a[1]的地址 &a[1], *(a+1) = a[1]; 

a[0] 是第一个一维数组的数组名, 也代表第一个一维首地址即&a[0][0],*a[0] = a[0][0];
a[0]+1 代表a[0][1]的地址 &a[0][1], *(a[0]+1)=a[0][1];
a[1] 是第二个一维数组的数组名, 也代表第二个一维首地址即&a[1][0],*a[1] = a[1][0];
a[1]+1 代表a[1][1]的地址 &a[1][1], *(a[1]+1)=a[1][1];

由上可分析出:

*(*a)       = a[0][0]; 可转换成 *((*a+0)+0) = a[0][0];
*(*a+1)     = a[0][1]; 可转换成 *((*a+0)+1) = a[0][1];
*(*(a+1))   = a[1][0]; 可转换成 *(*(a+1)+0) = a[1][0];
*(*(a+1)+1) = a[1][1];          *(*(a+1)+1) = a[1][1];

即可得出规律 *(*(a+i)+j) = a[i][j] = *(a[i]+j) = (*(a+i))[j]

*(*(a+i)+j) = (*(a+i))[j] 解析下:
因为:*(a[0]+1)=a[0][1] 把 a[0] = *(a+0);
  评论这张
 
阅读(488)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018