c++问题,指针数组和指向数组的指针变量有什么不同?
2014-10-12
展开全部
指针数组是里边保存着指针的数组,是数组其元素是指针。
指向数组的指针变量是指针,该指针指向的内存地址是一个数组的元素的地址。
int * a[n] 就是一个长度为n的整形指针数组,其中保存着n个整形指针。
int (* a) [n]是个指向n个元素的整形数组的指针。
判断这些需要了解类型描述中的3个构造符:*(指针)、[](数组)、()(函数),这3个构造符优先级和结合方式都与用在表达式里一样,[]和()结合性较强,从左望右结合;*结合性较弱,从右往左结合。圆括号可以改变它们的结合关系(要注意圆括号是否是表示函数)。
int * a[n]中[]结合性最高,所以这个类型描述是数组,a是标识符,类型为int *,即保存着整形指针的数组。
int (* a) [n]中圆括号显然不表函数,那么就是用来改变结合关系的,圆括号里的* a首先结合,表示这是个指针,后边的[]表明这是个指向数组的指针,int是数组元素的类型。因此这是指向整形数组的指针。
指向数组的指针变量是指针,该指针指向的内存地址是一个数组的元素的地址。
int * a[n] 就是一个长度为n的整形指针数组,其中保存着n个整形指针。
int (* a) [n]是个指向n个元素的整形数组的指针。
判断这些需要了解类型描述中的3个构造符:*(指针)、[](数组)、()(函数),这3个构造符优先级和结合方式都与用在表达式里一样,[]和()结合性较强,从左望右结合;*结合性较弱,从右往左结合。圆括号可以改变它们的结合关系(要注意圆括号是否是表示函数)。
int * a[n]中[]结合性最高,所以这个类型描述是数组,a是标识符,类型为int *,即保存着整形指针的数组。
int (* a) [n]中圆括号显然不表函数,那么就是用来改变结合关系的,圆括号里的* a首先结合,表示这是个指针,后边的[]表明这是个指向数组的指针,int是数组元素的类型。因此这是指向整形数组的指针。
推荐于2016-10-06
展开全部
: int * a[n]:n个成员,每个都是int型的指针;int(*a)[n] 表示他是个指针,指向具有N个成员的数组。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询