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

如题所述

前者是指针数组,包含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长度
温馨提示:答案为网友推荐,仅供参考
相似回答