指针学习总结

 

1:对于二维数组a[m][n];

记住a,a+1 , a+2 ,... a+m-1分别指向a的第0,1,2,...,m-1行,是代表行地址

      a[0], a[1], a[2], ... a[m-1] 分别指向a的第0行第0列,第1行第0列,第二行第0列,。。。,是列地址。

       *a,*(a+1), *(a+2), *(a+m-1) 同上

 

行地址加1,相当于地址加了一行所占的空间,列地址加1,相当于地址加了一个元素所占的空间。

 

行地址加*号,或者后加[], 就变成了列地址

列地址加&号,就变成了行地址

虽然他们的数值是相同的,但是所代表的含义不同。

 

我个人理解:

*,[]用来降维

&用来增维

 

2:对于二维数组传递函数参数

已经定义int a[m][n];

Int (*p)[n];     //这里p的含义是指向一个一维数组,该一维数组拥有n的元素。

p=a;              // 将a的首行地址赋值给p

 

函数定义

void function(int (*(poit)[n],  int)

{

       Point[x][y]=1;

       *(*(Point+x)+y)=1;    //  point+x为第x-1行的行地址,

//  *(point+x)为第x-1行第0列的地址,

//  (*(Point+x)+y) 为第x-1行第y-1列的地址

       //上面两者等效。

}

 

Function(a,i)//函数调用

 

 

对于int  * p[m], 含义与上不同,它表示m个指针变量,每个指针变量存放了int类型的地址(指针)。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值