有关C语言的,请问int *p[3]和int(*p)[3]的区别,请大侠帮忙解释!

 我来答
loboho
2013-01-07 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:402万
展开全部
前者是指针数组,包含3个元素,后者是一个数组型指针。
区别一是:一个是3个元素的数组,相当于定义了三个变量;一个是单个变量。
区别二 是:前者变量类型是int*,后者变量类型是int (*)[3],int*指针的步长是一个int,而int (*)[3]指针步长是3个int。
int *p = new int[3];
int nAddress0 = (int)&p[0]; // 取p[0]的地址
int nAddress1 = (int)&p[1]; // 取p[1]的地址

cout << nAddress1 - nAddress0 << endl; // 输出是4,即一个int长度

int pp[3][3];
int (*q)[3] = &pp[0];
int nAddress0 = (int)q; // 取q[0]的地址
int nAddress1 = (int)(q +1); // 取q[1]的地址
cout << nAddress1 - nAddress0 << endl; // 输出是12,即3个int长度
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式