⼆维数组元素的地址(C语⾔规则,VC++验证)
#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;//
c语言二维数组表示方法
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]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。