二维数组、指针数组、数组指针
来源:互联网 发布:怎么关闭软件网络禁用 编辑:程序博客网 时间:2024/06/05 19:29
int main()
{
int (*p)[4] ;
int *q;
int a[3][4] ={3,5,6,7,1,2,3,4,0,10,12,15};
/************************************************************************/
//a[0] , a[1] , a[2] 分别表示第1行,第2行,第3行的首地址
cout<< a[0] << "\t"<< a[1] <<"\t"<< a[2] <<endl;
cout<<endl;
/************************************************************************/
//和上面的输出相同,验证了,二维数组名可理解为行指针;
cout<< &a[0][0] << "\t"<< &a[1][0] <<"\t"<< &a[2][0] <<endl;
cout<<endl;
/************************************************************************/
//(a+0) , (a+1) , (a+2) 分别表示第1行,第2行,第3行的首地址
cout<< (a+0) << "\t"<< (a+1) <<"\t"<< (a+2) <<endl;
cout<<endl;
/************************************************************************/
//*(a+0) , *(a+1) , *(a+2) 分别表示第 1 行第 1 个元素地址,第 2 行第 2 个元素地址,第 3 行第 3 元素地址;
cout<< *(a+0) << "\t"<< *(a+1) <<"\t"<< *(a+2) <<endl;
cout<<endl;
/************************************************************************/
// a 是二维数组行指针, *a 是取第 1 行 第 1 个元素地址,
// *a+0 是第 1 行第 1 个元素地址 + 偏移 0 ;
// *a+1 是第 1 行第 1 个元素地址 + 偏移 1;
cout<< *a+0 << "\t"<< *a+1 <<"\t"<< *a+2 <<"\t"<< *a+3 <<endl;
cout<<endl;
/************************************************************************/
//同下面的描述. *(*a+0) 和 *(*(a+0)+0) 等价
cout<< *(*a+0) << "\t"<< *(*a+1) <<"\t"<< *(*a+2) <<"\t"<< *(*a+3) <<endl;
cout<<endl;
//*(a+0)+0 ==> 第 1 行第 1 个元素地址 + 偏移 0 ; *(*(a+0)+0) ==> 解引用,取出值为3
//*(a+0)+1 ==> 第 1 行第 1 个元素地址 + 偏移 1 ; *(*(a+0)+1) ==> 解引用,取出值为5
cout<< *(*(a+0)+0) <<"\t"<< *(*(a+0)+1) <<"\t"<< *(*(a+0)+2) <<"\t"<< *(*(a+0)+3) <<endl;
cout<<endl;
//这里其实是把二维数组中 a 的第 1 行第 1 个元素的地址赋值给q;
q = *a;
//取 q(*a) 、q+1(*a+1) 、 q+2(*a+2) 、q+3(*a+3)
cout<< q <<"\t"<< q+1 <<"\t"<< q+2<<"\t"<< q+3 << endl;
//取值;
cout<< *q <<"\t"<< *(q+1) <<"\t"<< *(q+2)<<"\t"<< *(q+3) <<"\t"<<*(q+4)<< endl;
//p是一个数组指针,这个指针指向包含4个int型的数组。
//这里是将数组 a 的第一行首地址(包含4个元素) 赋值给p;
p = a;
//p+1相当于 a+1,既偏移到第 2 行;
cout<< p <<"\t"<< p+1 <<"\t"<< p+2 << endl;
//指针数组: 数组中的每个元素都是一个相应类型的指针变量;
//在定义指针数组时,系统会分配响应的空间来存放这些指针变量;
//因 m 已经分配好地址,所以其不可变;
//m[0] 是指针数组中的第一个元素,存放了一个指向int型变量的指针;
int* m[3];
m[0] = *a;
cout<<m[0][0]<<"\t"<<m[0][1]<<"\t"<<m[0][2]<<"\t"<<m[0][3]<<endl;
m[1] = *(a+1);
cout<<m[1][0]<<"\t"<<m[1][1]<<"\t"<<m[1][2]<<"\t"<<m[1][3]<<endl;
getchar();
}
0 0
- 二维数组 数组指针
- 二维数组 指针数组
- 数组指针,指针数组,二维数组,二维数组指针
- 数组指针,指针数组,二维数组,二维数组的指针
- 二维数组,指针数组和数组指针
- 二维数组、指针数组、数组指针
- 数组指针,指针数组和二维数组
- 二维数组&&指针数组与数组指针
- 指针数组,数组指针,以及二维数组
- 二维指针、指针数组和数组指针
- C++ 数组指针 二维指针 指针数组
- 二维数组与指针数组
- 数组指针输出二维数组
- 数组指针与二维数组
- 二维数组和数组指针
- 二维数组和指针数组
- 数组、二维数组与指针
- 二维数组与数组指针
- 600人四川方言手机语音数据库(样例)
- 请确认千万人确认我去
- 千万人未确认未确认未确认请问让我去我去任务确认
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个页面
- linq join两个表连接的多个条件使用
- 二维数组、指针数组、数组指针
- mount命令中offset参数的意义
- CentOS下Hadoop伪分布模式安装笔记
- 线程同步和异步
- velocity的应用
- PAT 1076
- 第二周项目4-玩时间
- 线程安全
- NO CD-ROM driver to use; GCDROM not loaded!