这个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;是怎么回事。
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