#include <iostream.h>
void main()
{
int a[2][3] = {{10, 20, 30}, {11, 21, 31}};
cout<<"a= "<<a<<" 第0行首地址"<<endl;//
cout<<"&a[0]= "<<&a[0]<<" 0行0列首地址"<<endl<<endl;//
cout<<"*a= "<<*a<<" 0行0列元素地址"<<endl;//
cout<<"a[0]= "<<a[0]<<" 0行0列元素地址"<<endl;//
cout<<"(a+0)= "<<a+0<<" 0行0列元素地址"<<endl;//
cout<<"*(a+0)= "<<*(a+0)<<" 0行0列元素地址"<<endl;//
cout<<"&a[0][0]= "<<&a[0][0]<<" 0行0列元素地址"<<endl<<endl;//
cout<<"*a[0]= "<<*a[0]<<" 第0行0列元素"<<endl;//,正确格式,但是对于其他列元素不能这么写
cout<<"**a= "<<**a<<" 第0行0列元素"<<endl;//
cout<<"**(a+0)= "<<**(a+0)<<" 第0行0列元素"<<endl<<endl;//
cout<<"a= "<<a<<" a[0]= "<<a[0]<<" a[1]= "<<a[1]<<" a[2]= "<<a[2]<<endl;
cout<<"&a= "<<&a<<" &a[0]= "<<&a[0]<<" &a[1]= "<<&a[1]<<" &a[2]= "<<&a[2]<<endl;
cout<<"0行首地址*a= "<<*a<<"0行0列元素*a[0]= "<<*a[0]<<"1行0列元素*a[1]= "<<*a[1]<<"超范围值不定*a[2]= "<<*a[2]<<endl<<endl;
上行为各行首元素,其他列元素不能这么表示,见下例
cout<<"a+0= "<<a+0<<" a+1= "<<a+1<<" a+2= "<<a+2<<endl;//各行首地址
cout<<"*(a+0)= "<<*(a+0)<<" *(a+1)= "<<*(a+1)<<" *(a+2)= "<<*(a+2)<<endl<<endl;;//各行首地址
cout<<"a[0][0]= "<<a[0][0]<<" a[0][1]= "<<a[0][1]<<" a[0][2]= "<<a[0][2]<<endl;//元素值
cout<<"a[1][0]= "<<a[1][0]<<" a[1][1]= "<<a[1][1]<<" a[1][2]= "<<a[1][2]<<endl;
cout<<"&a[0][0]= "<<&a[0][0]<<" &a[0][1]= "<<&a[0][1]<<" &a[0][2]= "<<&a[0][2]<<endl;//元素地址
cout<<"&a[1][0]= "<<&a[1][0]<<" &a[1][1]= "<<&a[1][1]<<" &a[1][2]= "<<&a[1][2]<<endl<<endl;
// cout<<"*a[0][0]= "<<*a[0][0]<<" *a[0][1]= "<<*a[0][1]<<" *a[0][2]= "<<*a[0][2]<<endl;错误格式
// cout<<"*a[1][0]= "<<*a[1][0]<<" *a[1][1]= "<<*a[1][1]<<" *a[1][2]= "<<*a[1][2]<<endl;错误格式
cout<<"*(a+0)+0= "<<*(a+0)+0<<" *(a+0)+1= "<<*(a+0)+1<<" *(a+0)+2= "<<*(a+0)+2<<endl;//0行各列地址
cout<<"*(*(a+0)+0)= "<<*(*(a+0)+0)<<" *(*(a+0)+1)= "<<*(*(a+0)+1)<<" *(*(a+0)+2)= "<<*(*(a+0)+2)<<endl;//0行各列元素值
cout<<"*(a+1)+0= "<<*(a+1)+0<<" *(a+1)+1= "<<*(a+1)+1<<" *(a+1)+2= "<<*(a+1)+2<<endl;
cout<<"*(*(a+1)+0)= "<<*(*(a+1)+0)<<" *(*(a+1)+1)= "<<*(*(a+1)+1)<<" *(*(a+1)+2)= "<<*(*(a+1)+2)<<endl<<endl;
cout<<"a[0]+0= "<<a[0]+0<<" a[0]+1= "<<a[0]+1<<" a[0]+2= "<<a[0]+2<<endl;//0行各列元素地址
cout<<"a[1]+0= "<<a[1]+0<<" a[1]+1= "<<a[1]+1<<" a[1]+2= "<<a[1]+2<<endl;
cout<<"*(a[0]+0)= "<<*(a[0]+0)<<" *(a[0]+1)= "<<*(a[0]+1)<<" *(a[0]+2)= "<<*(a[0]+2)<<endl;//0行各列元素值
cout<<"*(a[1]+0)= "<<*(a[1]+0)<<" *(a[1]+1)= "<<*(a[1]+1)<<" *(a[1]+2)= "<<*(a[1]+2)<<endl<<endl;
}
小结:
1.各行元素首地址: a+i , *(a+i), a[i] , &a[i]
2.各行各列元素地址:*(a+i)+j, a[i]+j, &a[i][j]
3.各行各列元素值:*(*(a+i)+j) ,*(a[i]+j), a[i][j]