指针与数组的关系(一维、二维)
2018-11-07 21:47
92 查看
版权声明:本文为博主原创,未经博主允许不得转载 https://blog.csdn.net/Sherry_Yue/article/details/83831131
一、指针和一维数组间的关系
前提条件:
int a[10];//元素个数随意自己定 int *p = a;//定义指针时直接初始化,也可以分为两步:int *p; p=a;
第i个元素的地址:
&a[i] 等价于 a+i 等价于 &p[i] 等价于 p+i
第i+1个元素的值:
a[i] 等价于 *(a+i) 等价于 p[i] 等价于 *(p+i)
二、指针和二维数组间的关系
前提条件:(对于二维数组)
int a[2][3];//2行3列 行地址: a表示二维数组的首地址,第0行的地址 a+i代表第i行的地址,但并非增加i个字节 列地址: a[i] 或 *(a+i) 代表第i行第0列的地址 a[i]+j 或 *(a+i)+j 或 &a[i][j] 代表第i行第j列的地址 行指针指向的内容: *(*(a+i)+j) 或 a[i][j] 代表第i行第j列的内容 列指针指向的内容: *(a+i*n+j) 或 a[i*n+j] 或 a[i][j] 代表第i行第j列的内容
二维数组的行指针:(逐行查找,逐列查找)
#include <iostream> using namespace std; int main() { int a[2][3]={{1,2,3},{4,5,6}}; int (*p)[3];//(*p)[i]:是定义一个指向含有i个元素的数组的指针,不过要注意,这里“i”应该是一个常量 //*p[i]:定义元素类型是指针的数组,同样的“i”应该是整型 p=a;//用行地址初始化 for(int i=0;i<2;++i) { for(int j=0;j<3;++j) cout<<*(*(p+i)+j)<<" "; cout<<endl; } return 0; }
二维数组的列指针:(逐个查找,相对偏移量)
#include <iostream> using namespace std; int main() { int a[2][3]={{1,2,3},{4,5,6}}; int *p; p=*a; for(int i=0;i<2;++i) { for(int j=0;j<3;++j) cout<<*(p+i*3+j)<<" "; cout<<endl; } cout<<endl;//另外一种表示方法 for(int i=0;i<2;++i) { for(int j=0;j<3;++j) cout<<p[i*3+j]<<" "; cout<<endl; } return 0; }阅读更多
相关文章推荐
- 一维指针和数组,二维指针和数组
- C++(typedef、一维数组转成二维数组、C和C++区别、成员地址成员指针、构造析构函数、this指针、const用法、显示时间、const用法)
- 数组(一维和二维)与指针(C语言)
- 二维数组 指针 形参 用一个关系图解决问题
- 数组的递进理解——由一维到多维,数组和指针的关系比较等
- 一维数组与指针的关系
- C++中一维数组与指针的关系详细总结
- 指针和数组(一维,二维,三维)以及野指针的避免
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- 一维指针与一位数组的关系(转载\整理)
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- c语言中的数组,一维二维的概念和定义
- 指针与数组的关系
- 详细解读指针和数组的关系
- 二维指针和一维指针
- C语言 指针与一维数组,指针遍历一维数组的多种方法
- 征服C指针之数组和指针的微妙关系
- 数组与指针关系
- 浅谈 指针与数组的关系
- C语言-指向一维数组元素的指针