两个程序看指针

来源:互联网 发布:java实现三个人打球 编辑:程序博客网 时间:2024/05/01 17:48

//程序1:
#include <iostream.h>
void main()
{
 int line1[3]={1,0,0};
 int line2[3]={0,1,0};
 int line3[3]={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;
 }
}

//程序2:

#include <iostream.h>
void main()
{
 int array[2][3]={{11,12,13},{21,22,23}};
 for(int i=0;i<2;i++)
 {
  cout<<*(array+i)<<endl;
  for(int j=0;j<3;j++)
  {cout<<*(*(array+i)+j)<<" ";}
  cout<<endl;
 }
}

//解析:数组array是一个二维数组(2行3列),可以首先将其看成一个一维指针数组array[2],它有两个元素
//,即二维数组的行数,array[0]和array[1]分别代表二维数组第0行和第1行的首地址。而二维数组的每一行
//就相当于一个具有3个元素的一维int数组。

// array[i][j]被编译器翻译为*(*(array+i)+j)
//可以这样理解:数组array[i]是一个指针数组,有i个元素,array为其首地址,所以(array+i)是一个指针
//其内容*(array+i)也是一个指针,因此(*(array+i)+j)为指针,指向array[i][j] 

原创粉丝点击