Pointer and Array

 

1.各种指针的定义:

  • int *pi ; //pi是指向int型变量的指针

  • float *pi; //pi是指向float型变量的指针

  • char *pc; //pc是指向char型的变量指针

  • char (*pa)[3]; //pa是指向一维数组的指针

  • int (*pf)();//指向函数pf的指针,函数的返回值类型为int型数值

  • int **pp;//指向指针的指针,即二级指针

 

2.有关指针和数组

  • 一维数组

    例如:int a[5];下标方法表示为:a[i],其中,i=0,1,2,3,4;

    用指针的方法表示为:*a+i

  • 二位数组

 例如:int a[2][5];

 其中,有10int型变量.下表方法表示为:a[i][j],其中,i=0,1;j=0,1,2,3,4;

 

 用指针方法表示为:

1.用指针表示它的行和列

**a+i+j

2.行数组用下标表示,列数组用指针

*(a[i]+j)

3.行数组用指针表示,列数组用下标表示

(*a+i)[j]

4,按二维数组各个元素在内存中的存放顺序,用指向数组首元素的一级指针表示

*(&a[0][0]+5*i+j)

 

------------可以将一个二维数组看作一个一维数组,而它的元素又是一个一维数组----------

例如:

a[2][5]可以看做是有2个元素的一维数组,即称行数组,而每个元素又是具有5个元素的一维数组,即称为列数组。

因此,a[2][5]可以看作是2个元素的一维数组,其中每个元素又是具有5个元素的一位数组。

  • 三维数组

同理如二维数组。

可以将每个元素看作为一维数组的二维数组,而二维数组可以看作是每个元素为一维数组的一维数组。 将三维数组理解为有行数组,列数组,组数组组成,它们都是一维数组。

例如:

int a[3][5][7];

其中, i=0,1,2; j=0,1,2,3,4; k=0,1,2,3,4,5,6;

各种指针及下标表示方法如下:

  1. 用指针表示它们的行数组,列数组,组数组表示

    ***(a+i)+j+k

  2. 用指针表示行数组。列数组,组数组用下标表示

    *(*(a[i])+j)+k), 其它同理。

 

     

你可能感兴趣的:(array)