先看示例:
1 #include<iostream>
2 using namespace std;
3 void main()
4 {
5 int a[2][3]={{1,2,3},{4,5,6}};
6 int (*pa)[3]=a;
7 int i=0;
8 int *p=*pa;
9 for(i=0;i<6;i++){
10 cout<<*p<<" ";
11 p++;
12 }
13 cout<<endl;
14 cout<<**pa<<" "<<**(pa+1)<<endl;
15 cout<<*(*pa+1)<<endl;
16 }
vs2008结果如下:
1 2 3 4 5 6
1 4
2
分析:
int *prt[]=int *(prt[])这是一个数组,数组的元素是指针;int (*prt)[]这是一个指针(而且是两维指针),指向的是一个整型数组;
例中int (*pa)[3]=a的pa是一个两维指针,故临时变量int *p=*pa而不是int *p=pa;
该示例的示意图如下:
*(*pa+1)
↓
**pa → 1 2 3
**(pa+1)→ 4 5 6
原文链接: https://www.cnblogs.com/caixu/archive/2012/02/27/2370599.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/42709
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!