蔡諝的窝

博客园 首页 新随笔 联系 订阅 管理

先看示例:

 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

posted on 2012-02-27 23:15  蔡諝  阅读(239)  评论(0编辑  收藏  举报