⼆维数组元素的地址(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小时内删除。
发表评论