二维数组的地址

1.列表法

int b[n][m]的第一个元素地址为&b[0][0]:

声明 int *p;

         p=&b[0][0];

         *(p+1) 等于b[0][1]

         *(p+i*m+j)就是b[i][j]

        p每次加1,指向下一列的元素,这时p称为列指针。

 

2.行地址法

对二维数组int b[10][20]  每行看做一个整体,每个元素看做一行的一维数组

b是这个一维数组的名字,B[i]就是这个一维数组的第i个元素

b是这个一维数组的首地址,b+i就是第i个元素的地址

 

b[i]实际上是一行元素。它是这一行元素的名称,就是这一行元素的首地址

*(*(b+i)+j)与b[i][j]、*(b+i)[j]相同

 

与b对应的指针的声明为 int (*p)[20];

*(*(b+i)+j)=(i+1)*(j+1);

这样声明指针变量,复制p=b,开始p是第0行地址,p+1就是第一行的地址。p称为行地址。

2.二维数组的指针作为函数的参数

int b[n][m]

int *p 实参应该为&b[0][0]  

访问 *(p+M*i+j)

int(*p)[M] 实参为B或&B[0],函数中访问元素的基本方式*(*(p+i)+j)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值