C++:二维数组的指针表示及相关操作

2015年08月04日 其他资源 暂无评论 阅读1083次

有如下二维数组:

 int TBL[3][4] = {

   { 1,  2,  3,  4 },

   { 5,  6,  7,  8 },

   { 9, 10, 11, 12 },

 }


二维数组用指针的表示形式


int* tblPointer = TBL[0];

 相当于是二维数组一维化了(以先行后列的存储方式)

 TBL[0]就是第一行数组的首地址


得到二维数组的总列数(4):


int tblColumns = sizeof(TBL[0]) / sizeof(int);


得到二维数组的行数(3):


int tblRows = sizeof(TBL) / sizeof(TBL[0]);


得到二维数组的所有元素个数(12):


1. 可以使用上面得到的二维数组的行数和列数相乘

 2. 类比得到二维数组行数和列数的方法,容易想到有下面的计算方式

   int tblCounts = sizeof(TBL) / sizeof(int);


得到二维数组i行,j列的元素(TBL[i][j]):


int valueIJ = tblPointer[i * tblColumns + j];

 因为已经把二维数组用先行后列的存储方式一维化了,所以可以i * 二维数组的列数 + j 的方式得到一维数组的下标。

 int valueIJ = *(*(tblPointer + i) + j);

 tblPointer为首行的首地址, + i 后相当于,重新指向到i行, 后面在+ j 就是指向j列

 前面星号*的作用就是要取得指针所指向的对象


C++新手,暂时记录起来慢慢体会。

分享本文至:

WRITTEN BY

avatar
本文标签:指针二维数组
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

欢迎留言




用户登录

sitemap