二维数组的指针

原创 2016年08月29日 12:50:41
int main(){
int aa[4][5]={ {1,2,3,4,5}, {6,7,8,9,0}, {11,12,13,14,15}, {16,17,18,19,20} };
int (*p)[5]=aa;  //或者
       cout<<*(*p+1)<<endl;
cout<<*(*(p+3)+1)<<endl;    
}

会打印2和17.
为啥

记住一个万能公式就行了:
*(p + i) = p[i]

int a[2][3]={{1,2,3},{4,5,6}} **p; p=a; 

则 *(*(p+1)+2)=p[1][2]

 

指针(的)数组:array of pointers,数组元素都是指针    int* a[5] 

数组(的)指针:a pointer to an array,即指向数组的指针  int (*a)[5]

对于一个普通的一位数组来说,int c[4]={1,2,3,4}; 定义一个 int (*a)[4] 表示*a是一个指针,它指向一个大小为4的数组。


所以,对于二维数组来说,我们这里定义了一个数组的指针   int (*p)[5]=aa;

表示*p是一个指针,它指向一个大小为5的数组。也就是说,*p是个指针,代表每一行的地址。*(p+1)代表指向下一行的地址。


总结起来,(*(*p))的两个*,靠近p 的取址符是行指针,远离的是列

对比给二维数组赋值的时候类似如下:

先行再列

size_t cnt = 0;

for (auto &row : ia)            // 对于外层数组的每一个元素

    for (auto &col : row) {     // 对于内层数组的每一个元素

        col = cnt;              // 将下一个值赋给该元素

        ++cnt;                  // 将 cnt加1

}

指针数组,数组指针与二维数组剖析

int *p[3]与int (*p)[3]的区别 *p[3]这个是一个指针数组,它所代表的意思是数组中的每一个元素都是一个指针变量,而(*p)[3],p是一个指针变量,表示指向一个含有3个整型元素的一...
  • qiumingjian
  • qiumingjian
  • 2015年05月06日 17:24
  • 3257

C/C++二维数组的参数传递与二维指针

在进行函数参数传递的时候,常常需要把一组数据传递给函数,我们知道一维数组在进行函数参数传递的时候,以数组名作为形参就可以,因为数组名就表示该数组的首地址,在函数内部也直接可以用[]符号访问。 那么二维...
  • u013752202
  • u013752202
  • 2015年11月06日 23:06
  • 5413

C/C++中二维数组和指针关系分析

在C/c++中,数组和指针有着密切的关系,有很多地方说数组就是指针式错误的一种说法。这两者是不同的数据结构。其实,在C/c++中没有所谓的二维数组,书面表达就是数组的数组。我猜想是为了表述方便才叫它二...
  • zhouxuguang236
  • zhouxuguang236
  • 2013年10月03日 18:02
  • 37931

C++中二维数组与指针关系的剖析.pdf

  • 2009年10月22日 10:27
  • 106KB
  • 下载

C++中二维数组与指针关系的剖析

  • 2010年10月27日 20:38
  • 186KB
  • 下载

用指针实现二维数组的转置

  • 2012年11月15日 18:47
  • 5KB
  • 下载

实验报告(指针将二维数组的行与列调换,验证回文数)

  • 2017年11月09日 21:24
  • 91KB
  • 下载

函数指针、函数名、二维数组指针做形参

  • 2013年10月16日 11:25
  • 102KB
  • 下载

C++:二维数组和二级指针的传递问题

再次看这篇文章,感觉说的好多都是废话,在文章最前面补充一句话: “[]的优先级高于*”,大家可以带着这句话看下面的~~~ ======================== 再一次的见证了自己的基...
  • rongfzh1990
  • rongfzh1990
  • 2014年05月14日 16:32
  • 869

二维数组和二级指针作为参数传给参数的方式

一.如果要将二维数组传给一个函数,有几种传参方式?    1).直接将二维数组传给函数。    eg:        void test(int arr[3][4]);    2).以数组指针的方式传...
  • litter_driver777
  • litter_driver777
  • 2016年06月11日 14:05
  • 1176
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二维数组的指针
举报原因:
原因补充:

(最多只允许输入30个字)