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];
其中,有10个int型变量.下表方法表示为: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;
各种指针及下标表示方法如下:
-
用指针表示它们的行数组,列数组,组数组表示
*(*(*(a+i)+j)+k)
-
用指针表示行数组。列数组,组数组用下标表示
*(*(a[i])+j)+k), 其它同理。