int a[5],*p;p=a;
指针p指向了数组a,于是可以通过下标或指针的形式访问数组元素。
① 以下标的形式访问:
数组下标法:a[i],i=0, 1, 2, 3, 4 或
指针下标法:p[i],i=0, 1, 2, 3, 4 //用指针变量名p代替数组名
② 以指针的形式访问:
地址引用法: *(a+i),i=0, 1, 2, 3, 4 或
指针引用法:*(p+i),i=0, 1, 2, 3, 4
1.1通过指针访问一维数组
1,int a[10], i;
for (i=0;i<10;i++) cin>>a[i];
2,int a[10], i;
for (i=0;i<10;i++) cin>>*(a+i);
for (i=0;i<10;i++) cout<<*(a+i)<<" ";
3,int a[10], *p;
for (p=a;p> *p;
1.2
定义:
元素类型 数组名[常量表达式1][常量表达式2]...[常量表达式n];
说明:
s[0][0] |
s[0][1] |
s[0][2] |
s[0][3] |
s[1][0] |
s[1][1] |
s[1][2] |
s[1][3] |
s[2][0] |
s[2][1] |
s[2][2] |
s[2][3] |
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
2,用指针访问二维数组:
1),在这里,指针p被定义为:“指向int的指针”,即,p指针“认为”它指向的是一个一维数组,每个元素都是int型的,共有12个。
#include
using namespace std;
int main() {
int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
int* p = &a[0][0];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
cout << *p++ << '\t';
return 0;
system("pause");
}
2),在这里,指针p将以和数组a完全相同的“视角”取看待二维数组。a是怎样使用的,p就是怎样使用的。*(*(p+i)+j)可替换为a[i][j],*(a[i]+j),p[i][j],*(p[i]+j)。
对p指针的理解:*p声明了p是指针;p指向了一个包含了4个整数的一维数组
#include
using namespace std;
int main() {
int a[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
int(* p)[4] = a;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 4; j++)
cout << p[i][j] << '\t';
return 0;
system("pause");
}