7.4 指向数组元素的指针
声明与赋值
例:int a[10], *pa;
pa=&a[0]; 或 pa=a[p1] ;
通过指针引用数组元素,经过上述声明及赋值后:
*pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i].
a[i], *(pa+i), *(a+i), pa[i]都是等效的。不能写 a++,不能给数组名赋值或者试图改变其值,因为a是数组首地址是常量。
例子:使用三种方法输出数组元素
使用数组名和下标 | 使用数组名指针运算 | 使用指针变量 |
int main() { int a[10]; int i; for(i=0; i<10; i++) cin>>a[i]; cout<<endl; for(i=0; i<10; i++) cout<<a[i];} | int main() { int a[10]; int i; for(i=0; i<10; i++) cin>>a[i]; cout<<endl; for(i=0; i<10; i++) cout<<*(a+i);} | int main() { int a[10]; int *p, i; for(i=0; i<10; i++) cin>>a[i]; cout<<endl; for(p=a; p<(a+10); p++) cout<<*p;} |
7.5 指针数组
指针数组的元素是指针型,例如:point *pa[2];由pa[0] ,pa[1]两个指针组成。
#include <iostream>
using namespace std;
int main()
{
int line1[]={1,0,0}; //声明数组,矩阵的第一行
int line2[]={0,1,0}; //声明数组,矩阵的第二行
int line3[]={0,0,1}; //声明数组,矩阵的第三行
int *p_line[3]; //声明整型指针数组
p_line[0]=line1; //初始化指针数组元素
p_line[1]=line2;
p_line[2]=line3;
cout<<"Matrix test:"<<endl; //输出单位矩阵
for(int i=0;i<3;i++) //对指针数组元素循环
{
for(int j=0;j<3;j++) //对矩阵每一行循环
{ cout<<p_line[i][j]<<" "; }
cout<<endl;
}
}
#include <iostream>
using namespace std;
int main()
{
int array2[2][3]={{11,12,13},{21,22,23}}; //声明二维int型数组
for(int i=0;i<2;i++)
{
cout<<*(array2+i)<<endl; //输出二维数组第i行的首地址
for(int j=0;j<3;j++)
{ cout<<*(*(array2+i)+j)<<" "; } //逐个输出二维数组第i行元素值
//写成 { cout<<*array2[i][j]<<" "; }比较好。
cout<<endl;
}
}//输出结果为:
0X0065FDE0
11,12,13
0X0065FDEC
21,22,23