这个C++小程序中 char (*p)[15] = a; 是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/06/20 09:23:30
#include <iostream>
using namespace std;

int main()
{
char a[3][15] = {"computer", "typewriter", "telephone"};
char (*p)[15] = a;

for (int i = 0; i < 3; i++)
cout << *p++ << endl;

return 0;
}
看不懂那个char (*p)[15] = a;是怎么回事。

在C和C++中,数组名和指针实质上是一样的。a[3]表示申请了3个连续的内存空间,而*a指向第一个空间,即a[0]。a[3][15]中a表示一个指向指针的指针,即二级指针。
题中*p和a[3]是等价的

让*p++知道应该一下加多少的,如果指针(*p) = a;则*p++指向了a[0][1];如果指针(*p)[15] = a;则*p++指向了a[1][0];

指针数组,数组元素为指针

char (*p)[15] = a是声明一个数组指针

即为char [0][15]=a