int (*p)[5],(数组名是指针,即数组首元素地址的指针),换言之指向数组的指针。
数组指针是指向数组地址(首地址)的指针,其本质为指针;
int a[4][5];
int (*p)[5]=a;
是一个指针变量,它指向包含5个int元素的一维数组,
此时p的增量以它所指向的一维数组长度为单位;
*(p+i)是二维数组a[i][0]的地址;
*(p+2)+3表示a[2][3]地址(第一行为0行,第一列为0列),*(*(p+2)+3)表示a[2][3]的值。
(例如
int *p[3],定义了p[0],p[1],p[2]三个指针),
指针数组是数组元素为指针的数组,其本质为数组。
#include
#include
#define COL 5
#define ROW 3
#define MAX 22
using namespace std;
#if 1
int main(){
int(*iPoint)[COL];
int array[ROW][COL] = { {1,2,3,4,5},{6,7,8,9,10},{0,11,22,33,44} };
int *iPointA[6];
int arrayX[MAX] = { 55,66,77,88,99,12,23,34,45,56,67 };
int i = 0;
int j = 0;
cout << "数组指针的使用" << endl; iPoint = array; // int(*iPoint)[5]中的 while (i < ROW) { j = 0; while (j< COL)
{
//cout << *((*iPoint+i)+j) <<" ";
cout << *((*(iPoint + i) )+ j) << " "; //与下面一直表达 // *iPoint++;
// cout << *(*iPoint + j) << " "; 加上后面的 *iPoint++;
j++; }
cout << endl;
// *iPoint++;
i++; }
cout << "指针数组:
iPointA[0] = " << endl;
i = 0; do { iPointA[0] = &arrayX[i];
cout << "arrayX["<< i <<"] = " << *iPointA[0] << " ";
if ((i+1) % 4 == 0)
cout << endl;
i++;
} while (i < MAX);
return 0;
}
#endif
注:只是学习记录,仅供参考,如有雷同,不胜荣幸!