指针数组与数组指针的区别是什么?麻烦详细点
指针数组:array
of
pointers,即用于存储指针的数组,也就是数组元素都是指针
数组指针:a
pointer
to
an
array,即指向数组的指针
还要注意的是他们用法的区别,下面举例说明。
int*
a[4]
指针数组
表示:数组a中的元素都为int型指针
元素表示:*a[i]
*(a[i])是一样的,因为[]优先级高于*
int
(*a)[4]
数组指针
表示:指向数组a的指针
元素表示:(*a)[i]
数组,相当于一栋大楼,里面有许多房间,房间号码,0,1,2,3....,每个房间里可以存放一个数据。
指针,相当于一栋大楼的地址,例如,某某路几号,至于这栋大楼里面房间是否已建好,或有多少房间,并不知晓。
例如:
int *x; // x 是指针,用来指向一个int 型存放区 的地址。没有存放数据的房间。
若想有存放数据的房间,则要 修建,例如
x = (int *) malloc(10*sizeof(int)); 于是,有了10个房间,可存放int 型 数据。
这时,等于 声 明 了 int x[10];
int y[10]; // 直接 声 明 y 是数组, 有10个房间,可存放10个 int 型 数据。
y 数组 首地址是 &y[0]
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)