#include <iostream>
using namespace std;
//a[i][j]表示 边(i,j)的权 但权的子为-1时表示 节点i与节点j没有直接相连
// int (*a)[10] 和 int *a[10]
int main()
{
int* a4; //a4 输一个指针
int* a2 [10] ; //数组指针。数组a2里存放的是10个int型指针
//类型 变量名 该类型元素个数
int test=100;
int *p=&test;
a2[0]=p;
// cout<<*a2[0]<<endl;
/***************************************************************************************************/
int (*a3);
int (*a1) [10] ;//*a1是指针,指向一个数组。此数组有10个int型元素
/*先找到声明符a,被括号括着,先看括号内的(优先级高),然后向右看,没有,向左看,是*,
* 说明a是个指针,什么指针?在看括号外面的,先向右看,有[] 是个数组,说明a是个
* 指向数组的指针,再向左看,是int,说明数组的每个元素是int。所以,这是一个指向
* 存放int的数组的指针。 */
int pp[10]={111,29,18,18,29,10,29,28,22,14};
a1=&pp;
cout<<a1[0][2]<<" "<<endl; //结果说明
cout<<(*a1)[2]<<" "<<endl; //结果说明
//注意这里a1 和*a1是有巨大的差别的 a1 是一个*a1的类型的数组
for(int i=0;i<10;i++)
{
cout<<*a1[i]<<" "; //结果说明
cout<< (*a1++)<<endl ;
}
//a1[1] 和 a1=a1+1; 效果等同
cout<<"*****************************\n";
int (*a5) [3] [3];
int bb[3][3]={1,2,3,
4,5,6,
7,8,9};
a5=&bb;
cout<< (*a5)[1][1]<<endl;
cout<< (*a5)[1][3]<<endl;
cout<< (*a5)[2][2]<<endl;
return 0;
}